【解決方法】マーカー区切り文字を含むテキスト ファイルを xls または xlsx ファイルに変換するにはどうすればよいですか?

プログラミングQA


次のようなテキストファイルがいくつかあります これ. ファイル内の @@@ は、新しい列の開始を示します。 Microsoft Excel 14.0 オブジェクト ライブラリまたはその他の無料ライブラリを使用して、このファイルを次のような Excel ファイルに変換したい これ.

誰でも助けることができますか?

私が試したこと:

私はこれについて完全に空白です。 を使おうと思っていたのですが、 split 各行と列の内容を取得するためのテキストファイルのメソッドですが、それを実装する方法がわかりません

解決策 1

各行を読み、「@@@」文字列の間でフィールドを分割する必要があります。 その後、次のコマンドを使用して新しい Excel ファイルを作成できます。 Microsoft.Office.Interop.Excel 名前空間 | Microsoft Docs[^]

解決策 2

これは、Excel ワークブックに情報を保存する基本を示しています。 独自の特定の要件に合わせて変更するだけです。 列ヘッダーが必要ない場合は、最初のループを省略し、行番号を 1 のままにします。

C#
using Excel = Microsoft.Office.Interop.Excel;


void Save()
{
    //Create an Excel application instance
    Excel.Application excelApp = new Excel.Application();

    //Create an Excel workbook instance and open it from the predefined location
    Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Type.Missing);
    Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Type.Missing);
    excelWorkSheet.Name = "mydata";

    int row = 1;
    int column = 1;
    for // a loop for all the column names
    {
        // row 1 contains column headers
        excelWorkSheet.Cells[row, column] = // text of the column header
        ++column;
    }

    int row = 2;    // leave as 1 if no column headers
    foreach (string str in // the lines of text)
    {
        string[] fields = str.Split(new char[]{ '@', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
        for (column = 0; column < fields.length; ++column)
        {
            excelWorkSheet.Cells[row, column + 1] = fields[column];
        }
        row++;
    }
    excelWorkBook.SaveAs(fileName);
    excelWorkBook.Close();
    excelApp.Quit();
}

コメント

タイトルとURLをコピーしました