我可以通过ClosedXML将EXCEL工作表保存为CSV吗?

pen*_*ake 8 .net c# excel closedxml

是否可以通过ClosedXML将工作簿的工作表保存为CSV?

例如:

var workbook = new XLWorkbook(fileName);
IXLWorksheet worksheet;
workbook.Worksheets.TryGetWorksheet(sheetName, out worksheet);
worksheet. /How to Save it as CSV?
Run Code Online (Sandbox Code Playgroud)

Aiv*_*ler 10

如果单元格具有分隔符,则其他答案将无法生成有效的CSV,因此这是更好的方法

var lastCellAddress = worksheet.RangeUsed().LastCell().Address;
File.WriteAllLines(csvFileName, worksheet.Rows(1, lastCellAddress.RowNumber)
    .Select(r => string.Join(",", r.Cells(1, lastCellAddress.ColumnNumber)
            .Select(cell =>
        {
            var cellValue = cell.GetValue<string>();
            return cellValue.Contains(",") ? $"\"{cellValue}\"" : cellValue;
        }))));
Run Code Online (Sandbox Code Playgroud)

这是基于@Extragorey的回答


Rai*_*ica 5

不,不能直接在 ClosedXML 中使用。您必须使用循环或 LINQ 来构建您自己的 CSV 文件。

例如:

System.IO.File.WriteAllLines(csvFileName,
    worksheet.RowsUsed().Select(row =>
        string.Join(";", row.Cells(1, row.LastCellUsed(false).Address.ColumnNumber)
                            .Select(cell => cell.GetValue<string>()))
 ));
Run Code Online (Sandbox Code Playgroud)