将XLSX文件转换为CSV文件

G. *_*ena 5 c# csv export-to-csv epplus

我需要将XLSX文件转换为另一个CSV文件.我已经做了很多关于如何进行这个过程的研究,但我找不到任何适合我的方法.我发现这个Github Gist只将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());

        }
Run Code Online (Sandbox Code Playgroud)

Pan*_*vos 7

您链接的代码读取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();
}
Run Code Online (Sandbox Code Playgroud)

Encoding.UTF8确保文件将被写为带有字节顺序标记的UTF8,允许所有程序理解这是UTF8文件而不是ASCII.否则,程序可以将文件读取为ASCII并阻塞遇到的第一个非ASCII字符.