0

私の目標は、単一の 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);

このコードを実行すると、複数の列を持つのではなく、各行の 1 つのセルにすべての行データが表示されます。

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);

したがって、false と書く代わりに、missing と書くことで正しく動作するはずでした。

このページは私がこれを理解するのを助けました

于 2013-01-30T11:23:40.493 に答える