Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Microsoft.Office.Interop.Excel将数据集导出到xlsx_C#_.net - Fatal编程技术网

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

C# 使用Microsoft.Office.Interop.Excel将数据集导出到xlsx,c#,.net,C#,.net,我使用以下代码将数据集导出到xlsx。 当我在.NET4.0上时,一切都很好,但有一个服务器要求框架在3.5中,不幸的是,我对此无能为力。因此,我将框架从4.0更改为3.5,当我执行代码时,我得到一个错误 旧格式或无效的类型库。(HRESULT的例外情况: 0x80028018(类型_E_INVDATAREAD)) 执行下面的行时会发生错误 Excel.Workbook工作簿=Excel.Workbooks.Add() 这是我的密码 static void Main(string[] args)

我使用以下代码将数据集导出到xlsx。 当我在.NET4.0上时,一切都很好,但有一个服务器要求框架在3.5中,不幸的是,我对此无能为力。因此,我将框架从4.0更改为3.5,当我执行代码时,我得到一个错误

旧格式或无效的类型库。(HRESULT的例外情况: 0x80028018(类型_E_INVDATAREAD))

执行下面的行时会发生错误

Excel.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();           

        }
static void Main(字符串[]args)
{
字符串filepath=“C:/test.csv”;
DataSet ds=Convert(filepath.ToString(),“tblCustomers”,“\t”);
Excel.Application Excel=新建Excel.Application();
Excel.Workbook工作簿=Excel.Workbooks.Add();
Excel.Worksheet sheet=(Excel.Worksheet)workBook.ActiveSheet;
int i=0;
对于(int j=0;j

有什么建议吗?

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

来自Microsoft:

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

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

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

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

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

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

-使用InvokeMember执行Excel方法或属性,以便可以为调用指定CultureInfo。例如,以下代码说明了如何使用“en-US”作为CultureInfo调用工作簿对象添加方法

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


有关建议的解决方法的代码示例,请参见此链接:

ouf,它从那里经过,但在sheet.Cells[i+1,j+1]=ds.Tables[0].Columns[j].ToString()处中断之后;表示来自HRESULT的异常:0x800A03EC。即使我设置了sheet.Cells[i+1,j+1]=“ddd”;它还是坏了。为了使用Excel.Worksheet sheet=(Excel.Worksheet)workBook.ActiveSheet,还需要像这样转换sheet变量;也许这与此有关:?另外,我注意到您的循环从0开始(
I=0
&
j=0
),请尝试从1开始,因为我认为1是Excel中的开始,而不是0。换句话说,我认为Excel中不存在单元格
J0
(列:j行:0)。实际上,在考虑了我上面的评论之后,这将是一个没有意义的问题,因为您的代码与.NET 4.0一起工作。。。。