c# - Worksheet.SaveAs ("file.csv") 在 .NET 3.5 和 .NET 4.0 中的工作方式不同

标签 c# .net excel interop

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

  • 针对 .NET Framework 3.5 编译时,该方法使用分号 (;) 作为分隔符(这正是我需要的)来保存 CSV 文件。
  • 为 .NET Framework 4 编译时,它使用逗号 (,) 作为分隔符,代码中没有任何其他更改。

谁能解释一下发生了什么? 我如何强制 excel 在 CSV 文件中始终使用分号作为分隔符,而与目标 .NET Framework 无关?

最佳答案

您可以像这样为您的 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;

关于c# - Worksheet.SaveAs ("file.csv") 在 .NET 3.5 和 .NET 4.0 中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473815/

相关文章:

c# - 将更改从一个数据库更新到同一服务器中的另一个数据库

c# - WinForms DataGridView - 更新数据库

c# - 屏幕阅读器的辅助功能(例如 Jaws)

c# - 使用 recordType 的对象更新 Linq2Sql 中的记录

c# - 如何在 C# 中从 TCP 服务器发送\接收文件流?

vba - 使用 2 列删除重复项

java - 有没有办法使用 POI Api 将图像添加到单元格?

excel - 获取excel列标题的算法说明

c# - 如何将 4 位二进制数转换为 8 位二进制数?

c# - Parallel.ForEach 没有启动新线程