工作表.saveas ("file.csv")在.net 3.5和.net 4.0中的工作方式不同

本文关键字:quot 工作 net 方式不 saveas file csv | 更新日期: 2023-09-27 18:11:55

我有一个使用Interop.Excel功能用c#编写的项目。Worksheet.SaveAs("file.csv", ...)方法的工作方式与项目所构建的。net框架不同。

  • 当为。net Framework 3.5编译时,该方法使用分号(;)作为分隔符保存CSV文件(这就是我需要的)。
  • 当编译为。net Framework 4时,它使用逗号(,)作为分隔符,无需在代码中进行任何其他更改。
谁能解释一下发生了什么事?我怎么能强迫excel总是使用分号作为分隔符在CSV文件中,独立于目标。net框架?

工作表.saveas ("file.csv")在.net 3.5和.net 4.0中的工作方式不同

您可以像这样为Excel实例设置某些区域设置,以强制它如何写入CSV:

var cI = new CultureInfo(locale);
var excel = new Microsoft.Office.Interop.Excel.Application();
excel.UseSystemSeparators = false;
excel.ThousandsSeparator = cI.NumberFormat.NumberGroupSeparator;
excel.DecimalSeparator = cI.NumberFormat.NumberDecimalSeparator;

根据此链接,"Local"变量在使用工作簿时正常工作。保存,但总是使用逗号作为分隔符,当你试图保存一个特定的工作表(如工作表(2).保存)。

所以创建一个新的工作簿并将数据复制到其中应该可以工作:

Orig.Sheets(2).Range("A1:Q999").Copy
Set Export = Workbooks.Add
With Export
    .Worksheets(1).Range("A1").PasteSpecial (xlPasteValues)
    .SaveAs Filename:=Path & "'Name.csv", FileFormat:=xlCSV, Local:=True
    .Close SaveChanges:=False
End With