반응형
EXCEL 워크시트를 ClosedXML을 통해 CSV로 저장할 수 있습니까?
워크북의 워크시트를 ClosedXML을 통해 CSV로 저장할 수 있습니까?
예를 들어,
var workbook = new XLWorkbook(fileName);
IXLWorksheet worksheet;
workbook.Worksheets.TryGetWorksheet(sheetName, out worksheet);
CSV로 저장하는 방법?
셀에 구분자가 있는 경우 다른 답변은 유효한 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;
}))));
이는 @Extragorey의 답변에 근거한 것입니다.
아니요, ClosedX에서는 직접 가능하지 않습니다.ML. 루프나 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>()))
));
@Emanuelle이 지적한 바와 같이 @Raidri의 답변은 적절한 CSV 형식을 생성하지 못할 뿐만 아니라 빈 행도 완전히 생략합니다.이 문제를 해결하려면:
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>()))
));
틀렸습니다
row.LastCellUsed(false)
csv의 올바른 형식이 아닙니다.상대 구분 기호를 가져오는 대신 마지막 열이 비어 있습니다.
언급URL : https://stackoverflow.com/questions/27102904/can-i-save-an-excel-worksheet-as-csv-via-closedxml
반응형
'source' 카테고리의 다른 글
사용자의 현지 시간에서 2시간을 빼는 방법은? (0) | 2023.10.31 |
---|---|
트랜잭션당 개별 행 데이터 타임 스탬프로 정의된 일정 기간 동안의 트랜잭션을 카운트하는 방법 (0) | 2023.10.31 |
sqlite artertable 단일 문에 여러 열 추가 (0) | 2023.10.31 |
angular 4 unit testing error 'TypeError: cctor는 생성자가 아닙니다' (0) | 2023.10.31 |
유휴 상태일 때 MySQL Workbench 연결이 끊어짐 (0) | 2023.10.31 |