我使用以下代码将数据集导出到xlsx。 当我在.net 4.0上时,一切正常,但有一个服务器要求框架在3.5中不幸,我无法做任何事情。所以我将框架从4.0更改为3.5,当我执行代码时出现错误
旧格式或无效类型库。 (HRESULT的例外情况: 0x80028018(TYPE_E_INVDATAREAD))
波纹管线执行时发生错误
Excel.Workbook workBook = excel.Workbooks.Add();
这是我的代码
static void Main(string[] args)
{
String filepath = "C:/test.csv";
DataSet ds = Convert(filepath.ToString(), "tblCustomers", "\t");
Excel.Application excel = new Excel.Application();
Excel.Workbook workBook = excel.Workbooks.Add();
Excel.Worksheet sheet = (Excel.Worksheet)workBook.ActiveSheet;
int i = 0;
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
sheet.Cells[i + 1, j + 1] = ds.Tables[0].Columns[j].ToString();
}
i = 1;
foreach (DataRow row in ds.Tables[0].Rows)
{
for (int j = 0; j < row.ItemArray.Length; j++)
{
sheet.Cells[i + 1, j + 1] = row[j].ToString().Trim();
//cleangth = row[j].ToString().Trim().Length *10;
}
i++;
}
workBook.SaveAs(@System.IO.Directory.GetCurrentDirectory() + "\\test.xlsx");
workBook.Close();
}
有什么建议吗?
答案 0 :(得分:1)
这显然是在.NET 4.0(source)中修复的错误:如果Excel的区域设置与PC的区域设置不同,则会出现此错误。
来自Microsoft:
在满足以下条件时调用Excel方法会收到此错误:
- 该方法需要LCID(区域设置标识符)。
- 您运行的是英文版的Excel。但是,计算机的区域设置是针对非英语语言配置的。
如果客户端计算机运行英语版本的Excel并且当前用户的语言环境配置为英语以外的语言,Excel将尝试找到所配置语言的语言包。如果未找到语言包,则报告错误。
要解决此问题,您可以使用以下方法之一:
- 为您的Office版本安装多语言用户界面包。
- 使用InvokeMember执行Excel方法或属性,以便为调用指定CultureInfo。例如,以下代码说明了如何使用“en-US”作为CultureInfo调用Workbooks对象Add方法
- 或者,在调用Excel方法之前设置CultureInfo。
请参阅此链接,了解建议的解决方法的代码示例:http://support.microsoft.com/kb/320369