如何使用ASP.NET C#将XL工作表名称放入DataTable

我在单个XL文件中导出三张工作表。 但是我得到一个工作表名称,如Table1,Table2,Table3。

下面是没有调用数据库,正确工作表名称的C#代码。

var ds = new DataSet(); var dt = new DataTable("TableName For Sheet1"); dt.Columns.Add("col1"); dt.Columns.Add("col2"); dt.Rows.Add("Value1", "Value2"); var dt2 = new DataTable("TableName For Sheet2"); dt2.Columns.Add("col1"); dt2.Columns.Add("col2"); dt2.Rows.Add("Value1", "Value2"); ds.Tables.Add(dt); ds.Tables.Add(dt2); ExcelHelper.ToExcel(ds, "test.xls", Page.Response); 

以下是用于调用数据库存储过程的C#代码,但表名称分别为Table1,Table2,Table2。

  DataSe ds = new DataSet(); DataTable dt = new DataTable("Registration Details"); DataTable dt1 = new DataTable("Education Details"); DataTable dt2 = new DataTable("Employeement Details"); dt = bl.Get_Registrationdetailsbydate(bo); gv_Regdetails.DataSource = dt; gv_Regdetails.DataBind(); dt1 = bl.Get_Registrationdetailsbydate1(bo); dt2 = bl.Get_Registrationdetailsbydate2(bo); DataTable filteredEducation = dt1.AsEnumerable() .Where(x => dt.AsEnumerable() .Any(z => z.Field<string>("Email").Trim() == x.Field<string>("Email").Trim())) .CopyToDataTable(); DataTable filteredEmployee = dt2.AsEnumerable() .Where(x => dt.AsEnumerable() .Any(z => z.Field<string>("Email").Trim() == x.Field<string>("Email").Trim())) .CopyToDataTable(); ds.Tables.Add(dt); ds.Tables.Add(filteredEducation); ds.Tables.Add(filteredEmployee); ExcelHelper.ToExcel(ds, "DangoteUsers.xls", Page.Response); 

我需要表单名称结果,如注册详细信息,教育详细信息和员工详细信息。

我参考这个例子: http : //www.codeproject.com/Articles/31516/Export-DataSet-to-Multiple-Excel-Sheets

在初始化之后,你正在重写dtdt1dt2 ,这就是为什么你没有正确地获取名字,而是获取表的默认名称。 尝试在分配后为这三个表设置名称,或在分配逻辑中包含表名。 我更新了你的代码来certificate这一点。

 DataSet ds = new DataSet(); var dt = bl.Get_Registrationdetailsbydate(bo); gv_Regdetails.DataSource = dt; gv_Regdetails.DataBind(); var dt1 = bl.Get_Registrationdetailsbydate1(bo); var dt2 = bl.Get_Registrationdetailsbydate2(bo); DataTable filteredEducation = dt1.AsEnumerable() .Where(x => dt.AsEnumerable() .Any(z => z.Field<string>("Email").Trim() == x.Field<string>("Email").Trim())) .CopyToDataTable(); DataTable filteredEmployee = dt2.AsEnumerable() .Where(x => dt.AsEnumerable() .Any(z => z.Field<string>("Email").Trim() == x.Field<string>("Email").Trim())) .CopyToDataTable(); dt.TableName = "Registration Details"; filteredEducation.TableName = "Education Details"; filteredEmployee.TableName = "Employeement Details"; ds.Tables.Add(dt); ds.Tables.Add(filteredEducation); ds.Tables.Add(filteredEmployee); ExcelHelper.ToExcel(ds, "DangoteUsers.xls", Page.Response);