0

我的目标是使用 .csv 将单个 csv 字符串转换为 excel 中的多列Range.TextToColumns()

我有一个 csv 文件,其列中可以包含逗号,在这种情况下,列值周围有双引号。所以为了避免这个问题,我只是在行尾拆分以获得单独的行。我的计划是将每个 csv 行放在每个 excel 行的单个单元格中,并使用 Text to columns 函数来使我的列值以一种正确的方式获得,而不必担心列值中的逗号。

当前代码:

string row = lines[i - 1]; //single CSV row
var startCell = (Range)worksheet.Cells[i, 1];
var endCell = (Range)worksheet.Cells[i, 1];
var writeRange = worksheet.get_Range(startCell, endCell);

writeRange.Value2 = row;                                   

startCell.TextToColumns(startCell, XlTextParsingType.xlDelimited
, XlTextQualifier.xlTextQualifierDoubleQuote, false
, false, false, true, false, false, false
, XlColumnDataType.xlGeneralFormat, false, false, false);

执行此代码后发生的情况是,我在每行的单个单元格中获取所有行数据,而不是拥有多个列。

我已经编写了与我们在 Excel 表中执行 Text to Columns 时使用的手动方法并行的代码,手动方法产生了预期的结果,但是在 c# 中完成时同样的事情失败了。

如果我的方法中有任何错误,请指出错误,或者指出一些出路。
提前致谢。

4

1 回答 1

0

好的,找到了解决方案。原来 msdn 的家伙搞砸了这个页面上的文档:
Range.TextToColumns 文档 @msdn

startCell.TextToColumns(startCell, Excel.XlTextParsingType.xlDelimited,
Excel.XlTextQualifier.xlTextQualifierDoubleQuote, missing,
missing, missing, true, missing, missing, missing, missing,
missing, missing, missing);

所以,我应该写失踪,而不是写错,以使其正常工作。

这个页面帮助我解决了这个问题

于 2013-01-30T11:23:40.493 回答