Excel: текст в столбцы через C#
Я делаю приложение, где мне нужно отделить некоторые строки от одного столбца к другим. Разделителем является Космос. Я пытался гуглить некоторые решения, но почти ничего не нашел. Мне кажется, что здесь работает только один скрипт в stackru... Я также пытался записать макрос и эти два сценария вместе взятые. Но я получил ошибку "SafeArrayTypeMismatchException".. Программа не принимает истинное значение в качестве разделителя пробелов, а также массив не установлен как правильный тип. У вас есть идеи, что может помочь? Вот мой код: (Копирование последних двух блоков из столбца N в столбцы O и P)
private void text_to_columns()
{
int[][] field_info = { new int[] { 1, 9 }, new int[] { 2, 9 }, new int[] { 3, 9 }, new int[] { 4, 9 }, new int[] { 5, 1 }, new int[] { 6, 1 } };
Excel.Range rng_Status = xlWorkSheet.get_Range("N:N",Type.Missing);
rng_Status.TextToColumns(xlWorkSheet.get_Range("O:O",Type.Missing), Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierDoubleQuote, true, false, false, false, true, false, false, (object)field_info, false, false, true);
}
Большое спасибо за ваш ответ и идеи. Алан
2 ответа
Это разделит любой текст в выбранном вами столбце.
Здесь я разделяю запятую.
public static void SetDelimited(string MyRange) // MyRange = "A:A" or whatever.
{
sheet.Range[range].TextToColumns(sheet.get_Range(MyRange , Type.Missing),
XlTextParsingType.xlDelimited,
XlTextQualifier.xlTextQualifierDoubleQuote,
true, // Consecutive Delimiter
Type.Missing,// Tab
Type.Missing,// Semicolon
true, // Comma
false, // Space
Type.Missing,// Other
",", // Other Char
Type.Missing,// Field Info
Type.Missing,// Decimal Separator
Type.Missing,// Thousands Separator
Type.Missing);/ Trailing Minus Numbers
}
Это должно работать:
Excel.Application oXL;
Excel._Workbook dataB;
Excel._Worksheet dataS;
Excel.Range oResizeRange;
string path = pathToCSV;
oXL = new Excel.Application();
dataB = oXL.Workbooks.Open(path, 0,
false, 5, Missing.Value, Missing.Value, false, Missing.Value, Missing.Value,
false, false,Missing.Value, false, false, false);
dataB.Application.DisplayAlerts = false;
oXL.Visible = true;
dataS = (Excel._Worksheet)dataB.ActiveSheet;
dataS.get_Range("A1",("A" +
dataS.UsedRange.Rows.Count)).TextToColumns(Type.Missing,
Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited,
Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierNone, true,
Type.Missing,Type.Missing, false, true, Type.Missing,
" ", Type.Missing, Type.Missing, Type.Missing, Type.Missing);