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);
Другие вопросы по тегам