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