// ********************************************************************** public override void ProcessTable(XlTable xt) { sb.Clear(); for(int row = 0; row < xt.Rows; row++) { for(int col = 0; col < xt.Columns; col++) { xt.ReadValue(); switch(xt.ValueType) { case XlTable.BlockType.Float: sb.Append(xt.FloatValue.ToString().PadLeft(vspace)); break; case XlTable.BlockType.String: sb.Append(xt.StringValue.PadLeft(vspace)); break; default: sb.Append(xt.ValueType.ToString().PadLeft(vspace)); break; } } sb.AppendLine(); } Data = sb.ToString(); updated = true; }
// Обработчик данных public override void ProcessTable(XlTable xt) { // Поступили новые данные из таблицы, настроенной для экспорта // в "Рабочую книгу" trades. // Все переданные данные содержатся в переменной xt, являющейся // экземпляром класса XlTable, который содержит методы для их // распаковки. // xt.Rows - кол-во строк, xt.Columns - кол-во столбцов в полученной // таблице. Для чтения одной ячейки таблицы служит метод // xt.ReadValue(), который после своего вызова устанавливает // свойства xt.ValueType - тип прочитанных данных и xt.*Value - // значение в ячейке. От Квика поступают данные двух типов: // XlTable.BlockType.Float (double в C#) // XlTable.BlockType.String (в C# тоже string) // Отобразим всю полученную информацию for(int row = 0; row < xt.Rows; row++) { for(int col = 0; col < xt.Columns; col++) { xt.ReadValue(); switch(xt.ValueType) { case XlTable.BlockType.Float: Console.Write("D:{0}\t", xt.FloatValue); break; case XlTable.BlockType.String: Console.Write("S:{0}\t", xt.StringValue); break; default: Console.Write("{0}:{1}\t", xt.ValueType, xt.WValue); break; } } Console.WriteLine(); } }
// ********************************************************************** // Обработчик данных public override void ProcessTable(XlTable xt) { // Учитывая, что это простой пример, в очередь будем // класть уже готовую для отображения строку. for(int row = 0; row < xt.Rows; row++) { sb.Clear(); for(int col = 0; col < xt.Columns; col++) { xt.ReadValue(); switch(xt.ValueType) { case XlTable.BlockType.Float: sb.Append(xt.FloatValue); break; case XlTable.BlockType.String: sb.Append(xt.StringValue); break; default: sb.Append(xt.ValueType); sb.Append(":"); sb.Append(xt.WValue); break; } sb.Append("\t"); } sb.AppendLine(); Queue.Enqueue(sb.ToString()); } }