Is it possible to save a worksheet of a workbook as CSV via ClosedXML?
For example:
var workbook = new XLWorkbook(fileName);
IXLWorksheet worksheet;
workbook.Worksheets.TryGetWorksheet(sheetName, out worksheet);
How to Save it as CSV?
Is it possible to save a worksheet of a workbook as CSV via ClosedXML?
For example:
var workbook = new XLWorkbook(fileName);
IXLWorksheet worksheet;
workbook.Worksheets.TryGetWorksheet(sheetName, out worksheet);
How to Save it as CSV?
No, it is not possible directly in ClosedXML. You have to use loops or LINQ to build your own CSV file.
For example:
System.IO.File.WriteAllLines(csvFileName,
worksheet.RowsUsed().Select(row =>
string.Join(";", row.Cells(1, row.LastCellUsed(false).Address.ColumnNumber)
.Select(cell => cell.GetValue<string>()))
));
Other answers will fail to generate a valid CSV if cells have the separator so here is a better way
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;
}))));
This is based on @Extragorey's answer
No, it is not possible directly in ClosedXML. You have to use loops or LINQ to build your own CSV file.
For example:
System.IO.File.WriteAllLines(csvFileName,
worksheet.RowsUsed().Select(row =>
string.Join(";", row.Cells(1, row.LastCellUsed(false).Address.ColumnNumber)
.Select(cell => cell.GetValue<string>()))
));
As @Emanuele points out, @Raidri's answer won't generate a proper CSV format, and it also omits blank rows entirely. To fix this:
var lastCellAddress = worksheet.RangeUsed().LastCell().Address;
System.IO.File.WriteAllLines(csvFileName, worksheet.Rows(1, lastCellAddress.RowNumber)
.Select(row => String.Join(",", row.Cells(1, lastCellAddress.ColumnNumber)
.Select(cell => cell.GetValue<string>()))
));
Wrong in
row.LastCellUsed(false)
it's not a correct format for csv. Last columns will be empty instead of get relative separator.
© 2022 - 2024 — McMap. All rights reserved.