将 XLSX 文件转换为 CSV 文件

Converting XLSX file using to a CSV file

我需要将 XLSX 文件转换为另一个 CSV 文件。 我已经对如何执行此过程进行了大量研究,但没有找到适合我的方法。 我只找到这个 Github 要点 Convert an Epplus ExcelPackage to a CSV file

即returns一个二进制数组。但显然它不再起作用了。

我正在尝试使用 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());

        }

您链接到的代码通过内存流读取 XLSX sheet 和 returns 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,允许所有程序理解这是一个 UTF8 文件而不是 ASCII。否则,程序可以将文件读取为 ASCII 并在遇到第一个非 ASCII 字符时阻塞。

检查 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);
}

Is there any simple way to convert .xls file to .csv file? (Excel)

还有一些其他在线资源可以帮助解决这个问题。实际上,对于像这样通用的东西,你应该总是 Google 寻求解决方案,并尝试自己弄清楚。这是学习如何做技术事情的最好方法。如果您遇到困难,或者如果您有一个非常具体的问题,这个网站是 post 您的问题的好地方。在我看来,您可能是从这里开始的,您自己没有做任何前期工作。