谢谢你们,但我一直在寻找一些不太笨拙的东西。
无论如何,因为我只是一个步骤就可以关闭项目,我放在一起的不雅,但工作的解决方案是这样的:
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内置格式的长列表,但我认为您很可能找不到完全符合您需要的内容。如果这是一次性操作,那么执行全局搜索和替换来完成此任务将非常简单。这是否需要重复执行?您使用C#标记了这个内容 - 您是否对一些C#代码感兴趣,以执行后处理搜索和替换? – kmote 2012-02-26 03:14:23
'xlTextWindows'是定义换行符或多个字符的常量之一。 Windows使用CR LF。使用Excel,将工作簿另存为CSV不会在文本字段周围放置双引号,除非它包含逗号。 C#是不同的,或者你的字段中有逗号。我知道Excel将使用分号作为CSV分隔符,如果小数点分隔符被指定为逗号。这通常是一个国家设置,但C#具有允许临时的国家设置的功能,这可能值得一试。 – 2012-02-26 11:27:23