web-dev-qa-db-ja.com

を使用してXLSXファイルをCSVファイルに変換する

XLSXファイルを別のCSVファイルに変換する必要があります。このプロセスを実行する方法について多くの調査を行いましたが、自分に合ったものは見つかりませんでした。このGithubGistのみが見つかりました Epplus ExcelPackageをCSVファイルに変換します

バイナリの配列を返します。しかし、どうやらそれはもう機能しません。

LoadFromCollectionを使用して配列を読み込もうとしています

    FileInfo novoArquivoCSV = new FileInfo(fbd.SelectedPath);
    var fileInfoCSV = new FileInfo(novoArquivo + "\\" +
                                 nameFile.ToString() + ".csv");


            using (var csv = new ExcelPackage(fileInfoCSV))
        {
            csv.Workbook.Worksheets.Add(nameFile.ToString());
            var worksheetCSV = csv.Workbook.Worksheets[1];

            worksheetCSV.Cells.LoadFromCollection(xlsx.ConvertToCsv());

        }
5
G. Sena

リンクしたコードはXLSXシートを読み取り、メモリストリームを介してCSVデータをバイトバッファーとして返します。

代わりに、メモリストリームを削除し、ConvertToCsvでターゲットファイルへのパスを渡すと、ファイルに直接書き込むことができます。

public static void ConvertToCsv(this ExcelPackage package, string targetFile)
{
        var worksheet = package.Workbook.Worksheets[1];

        var maxColumnNumber = worksheet.Dimension.End.Column;
        var currentRow = new List<string>(maxColumnNumber);
        var totalRowCount = worksheet.Dimension.End.Row;
        var currentRowNum = 1;

        //No need for a memory buffer, writing directly to a file
        //var memory = new MemoryStream();

        using (var writer = new StreamWriter(targetFile,false, Encoding.UTF8))
        {
        //the rest of the code remains the same
        }

        // No buffer returned
        //return memory.ToArray();
}

Encoding.UTF8 ファイルがバイトオーダーマーク付きのUTF8として書き込まれることを保証します。これにより、すべてのプログラムがこれがASCIIではなくUTF8ファイルであることを理解できます。そうしないと、プログラムはファイルをASCIIとして読み取り、最初に検出された非ASCII文字でチョークする可能性があります。

7

Excelオブジェクトの.SaveAs()メソッドをチェックアウトします。

wbWorkbook.SaveAs("c:\yourdesiredFilename.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)

または以下:

public static void SaveAs()
{
    Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
    Microsoft.Office.Interop.Excel.Workbook wbWorkbook = app.Workbooks.Add(Type.Missing);
    Microsoft.Office.Interop.Excel.Sheets wsSheet = wbWorkbook.Worksheets;
    Microsoft.Office.Interop.Excel.Worksheet CurSheet = (Microsoft.Office.Interop.Excel.Worksheet)wsSheet[1];

    Microsoft.Office.Interop.Excel.Range thisCell = (Microsoft.Office.Interop.Excel.Range)CurSheet.Cells[1, 1];

    thisCell.Value2 = "This is a test.";

    wbWorkbook.SaveAs(@"c:\one.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    wbWorkbook.SaveAs(@"c:\two.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

    wbWorkbook.Close(false, "", true);
}

。xlsファイルを.csvファイルに変換する簡単な方法はありますか?(Excel)

このようなことを支援できるオンラインのリソースは他にもいくつかあります。実際、このような一般的なものについては、常にGoogleで解決策を探し、自分でそれを理解するようにしてください。それが技術的なことをする方法を学ぶための最良の方法です。行き詰まった場合、または非常に具体的な質問がある場合は、このサイトは質問を投稿するのに最適な場所です。おそらくあなたはここから始めたでしょうし、あなた自身も予備的な作業をしていません。

2
ryguy72