0

我正在制作应用程序,我需要将一些字符串从一列分离到其他列。分隔符是空格。我试图用谷歌搜索一些解决方案,但我几乎一无所获。stackoverflow 上只有一个脚本似乎对我有用。我还尝试录制宏并将这两个脚本放在一起。但我收到错误“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);
    }

非常感谢您的回答和想法。艾伦

4

2 回答 2

0

这应该有效:

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);
于 2014-02-13T14:26:40.617 回答
0

这将分隔您选择的列中的任何文本。
这里我用逗号分隔。

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
}
于 2016-01-22T19:50:53.853 回答