А, собственно говоря, чччо мы мучаемся... Пусть 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
);
}