使用Microsoft.Office.Interop.Excel将数据集导出到xlsx

本文关键字:xlsx 数据集 Microsoft Office Interop Excel 使用 | 更新日期: 2023-09-27 18:21:57

我使用以下代码将数据集导出到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();           
        }

有什么建议吗?

使用Microsoft.Office.Interop.Excel将数据集导出到xlsx

这显然是.NET 4.0中修复的一个错误(来源):如果Excel的区域设置与PC的区域设置不同,则会出现此错误。

来自微软:

当以下条件成立时,调用Excel方法会收到此错误:

-该方法需要LCID(区域设置标识符)。

-您运行的是Excel的英文版。但是,计算机的区域设置是为非英语语言配置的。

如果客户端计算机运行英语版本的Excel,并且当前用户的语言环境配置为英语以外的语言,Excel将尝试查找所配置语言的语言包。如果找不到语言包,则会报告错误。

要解决此问题,可以使用以下方法之一:

-为您的Office版本安装多语言用户界面包。

-使用InvokeMember执行Excel方法或属性,以便为调用指定CultureInfo。例如,下面的代码说明了如何使用"Add"调用Workbooks对象Add方法;en-US";作为CultureInfo

-或者,在调用Excel方法之前设置CultureInfo。

有关建议的解决方法的代码示例,请参阅此链接:http://support.microsoft.com/kb/320369