0

文字列をある列から別の列に分離する必要があるアプリケーションを作成しています。区切り文字はスペースです。いくつかの解決策をグーグルで検索しようとしましたが、ほとんど何も見つかりませんでした。ここstackoverflowのスクリプトは1つだけでうまくいくようです..マクロを記録しようとしましたが、これら2つのスクリプトをまとめました。しかし、エラー「SafeArrayTypeMismatchException」が発生しました..プログラムはスペース区切り文字で真の値を受け入れず、配列は正しい型として設定されていません。何が役立つか考えていますか?これが私のコードです:(最後の2つのブロックを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 に答える