ありがとうございましたが、少し不気味なものを探していました。私はちょうど歩プロジェクトを閉じてからだったので
とにかく、私はこのように一緒に洗練が、作業溶液を入れて:
static public void WorksheetToCSV(Excel.Worksheet origine, string CSVoutPath, string fieldSeparator, string textSeparator)
{
Excel.Range rngCurrentRow;
string lineaDaScrivere;
TextWriter csv = new StreamWriter(CSVoutPath);
for (int i = 1; i <= origine.UsedRange.Rows.Count; i++)
{
rngCurrentRow = origine.UsedRange.get_Range("A" + i, "A" + i).EntireRow;
lineaDaScrivere="";
foreach (Excel.Range cella in rngCurrentRow.Columns)
{
try
{
lineaDaScrivere = lineaDaScrivere + textSeparator + cella.Value.ToString() + textSeparator + fieldSeparator;
}
catch (NullReferenceException ex)
{
break;
}
}
lineaDaScrivere=lineaDaScrivere.Substring(0, (lineaDaScrivere.Length - fieldSeparator.Length));
csv.WriteLine(lineaDaScrivere);
}
csv.Close();
}
あり、より良い解決策がありますが、私にとっては予想通り、これは働いていました。
フィールドセパレータのカンマがCSVの "c"の略語であるため、カンマが表示されます。私はExcelの組み込み形式の長いリストに慣れていませんが、あなたのニーズに合ったものを見つけられない可能性が高いと思います。これが1回限りの操作であれば、このタスクを達成するためにグローバルな検索と置換を行うのはかなり簡単です。あなたが何度も何度もやる必要があるのでしょうか?あなたはこれをC#でタグ付けしました。後処理の検索と置換を行うC#コードに興味がありますか? – kmote
'xlTextWindows'は改行文字を定義する多くの定数の1つです。 WindowsはCR LFを使用しました。 Excelでは、ワークブックをCSV形式で保存すると、コンマが含まれていない限り、テキストフィールドの周囲に二重引用符が配置されません。 C#が異なるか、フィールドにカンマがあります。小数点区切り記号がカンマで指定されている場合、ExcelはセミコロンをCSV区切り記号として使用することを理解しています。これは通常国家の設定ですが、C#には一時的な国の設定を可能にする機能があり、試してみる価値があります。 –