将 csv 转换为 xlsx 但 TextQualifier 和 EOL 不起作用

问题描述 投票:0回答:1

我得到了一个由 7 列和大约 100 行组成的 csv 文件。一行看起来像这样:

A-1,1,ABC,01/01/2024,"a,sentence","a, paragraph in one cell
with some, line breaks
with some, line breaks", another sentence

我尝试使用 EPPLUS 转换 csv

FileInfo csvFile = new FileInfo(filePath);
using (ExcelPackage excel = new ExcelPackage())
{
    var format = new ExcelTextFormat();
    worksheet.Cells[1, 1 , csvData.Count, colCount].LoadFromText(csvFile, format, OfficeOpenXml.Table.TableStyles.Custom, true);
}

我不知道包含换行符的段落单元格是否会干扰 EPPLUS,但由于某种原因,它很难检测到 EOL。所有行都加载到第 1 行。不仅如此,段落单元格将被分成 4 个单元格,因为它包含分隔符

我尝试添加

format.TextQualifier = '\"';
但我会收到此错误
Text delimiter is not closed in line:
并且有问题的行是整个 csv 文件 bc 它将整个 csv 文件加载为 1 个单行...添加
format.EOL = "\r\n";
format.EOL = "\r"; 
不执行任何操作,所有数据仍会以相同的错误拆分方式加载到第 1 行。将
firstRowIsHeader
设置为 true 也不会执行任何操作,因为它再次无法检测新行何时开始。

我无法更改原始 csv 文件来更改其分隔符或修复其换行符。如何修复 EOL 并使用 TextQualifier?我错过了什么吗?请!

c# excel csv epplus
1个回答
0
投票

format.EOL = "\r\n"
format.EOL = "\r";
不起作用,但
format.EOL = "\n";
起作用。经过一些试验和错误后,我将其设置为 EOL,并最终可以设置 TextQualifier,而不会遇到“文本定界符未在线闭合”错误,并且现在所有内容都可以正确分割。

© www.soinside.com 2019 - 2024. All rights reserved.