|
21.06.2006, 18:01 | #1 |
Moderator
|
Цитата:
Сообщение от AndyD
Кстати, когда пробовал - написал код в VBA и в нем передавал строку с разделителями запятая и точка с запятой. Массив формировался нормально.
С суффиксом Local свойства FormulaArray у Range не увидел (в отличие от других Formula...). Пока не понятно только, почему Акса в этом случае требует не запятую, а обратный слэш... P.S. Так... чуть теплее... у меня запятая используется в качестве десятичного разделителя... AndyD, а Вы можете прогнать у себя свой джоб, заменив свою точку с запятой на обратный слэш? т.е. с FormulaArray(@'={1\1: 2\2: 3\2: 4\2: 5\2: 6\1: 7\1: 8\1: 9\1: 10\1}'); Последний раз редактировалось Gustav; 21.06.2006 в 18:07. |
|
21.06.2006, 18:57 | #2 |
Moderator
|
А, собственно говоря, чччо мы мучаемся... Пусть Excel сам всё и определяет для себя - все свои сепараторы, семиколоны, комасы и прочие бэкслэши - используем эксельную функцию TRANSPOSE :
X++: static void Test_OpenText_FormulaArray_2(Args _args) { COM xlApp; COM rng; COM wbks, wbk; COM wkss, wks; COM cells; ; xlApp = new COM('Excel.Application'); xlApp.Visible(true); wbks = xlApp.Workbooks(); wbk = wbks.Add(); wkss = wbk.Worksheets(); wks = wkss.Item(1); cells = wks.Cells(); // первая строка листа - номера полей A1:J1 COM::createFromVariant( cells.Item(1, 1) ).Value2( 1); COM::createFromVariant( cells.Item(1, 2) ).Value2( 2); COM::createFromVariant( cells.Item(1, 3) ).Value2( 3); COM::createFromVariant( cells.Item(1, 4) ).Value2( 4); COM::createFromVariant( cells.Item(1, 5) ).Value2( 5); COM::createFromVariant( cells.Item(1, 6) ).Value2( 6); COM::createFromVariant( cells.Item(1, 7) ).Value2( 7); COM::createFromVariant( cells.Item(1, 8) ).Value2( 8); COM::createFromVariant( cells.Item(1, 9) ).Value2( 9); COM::createFromVariant( cells.Item(1, 10) ).Value2( 10); // вторая строка листа - типы полей A2:J2 COM::createFromVariant( cells.Item(2, 1) ).Value2( 1); COM::createFromVariant( cells.Item(2, 2) ).Value2( 2); COM::createFromVariant( cells.Item(2, 3) ).Value2( 2); COM::createFromVariant( cells.Item(2, 4) ).Value2( 2); COM::createFromVariant( cells.Item(2, 5) ).Value2( 2); COM::createFromVariant( cells.Item(2, 6) ).Value2( 1); COM::createFromVariant( cells.Item(2, 7) ).Value2( 1); COM::createFromVariant( cells.Item(2, 8) ).Value2( 1); COM::createFromVariant( cells.Item(2, 9) ).Value2( 1); COM::createFromVariant( cells.Item(2, 10) ).Value2( 1); rng = wks.Range('A11:B20'); rng.FormulaArray('=TRANSPOSE(A1:J2)'); // используем формулу выше вместо формулы ниже :) // rng.FormulaArray(@'={1\1; 2\2; 3\2; 4\2; 5\2; 6\1; 7\1; 8\1; 9\1; 10\1}'); wbks.OpenText ( 'C:\\demo.txt', //FileName 1251, // Origin, 1, // StartRow, 1, // DataType 1, // TextQualifier false, // ConsecutiveDelimiter, true, // Tab, false, // Semicolon, false, // Comma, false, // Space, false, // Other, '', // OtherChar, rng // FieldInfo ); } |
|
Теги |
benchmark, download, excel, faq, xml, законченный пример, производительность, экспорт/импорт |
|
|