1

我生成excel文件的代码如下:

protected void btnReport_Click(object sender, EventArgs e)
{
try
{
Session["institute"] = "ABC";
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
SqlCommand cmd = new SqlCommand("select * from alumni_details where institute_name='" + Session ["institute"].ToString () + "'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds); 
GenerateXLSXFile(ds .Tables [0]);
}
catch (Exception)
{
 throw;
}
}

当我调用此函数时生成 excel 报告的函数出现上述错误

private void GenerateXLSXFile(DataTable tbl)
{
dynamic excelPackage = new ExcelPackage();
dynamic excelWorksheet = excelPackage.Workbook.Worksheets.Add("DemoPage");
excelWorksheet.Cells("A1").LoadFromDataTable(tbl, true);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;  filename=ExcelDemo.xlsx");
MemoryStream stream = new MemoryStream(excelPackage.GetAsByteArray());
Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length);
Response.Flush();
Response.Close();
}
4

3 回答 3

2

dynamic关键字是 .NET Framework 4.0 及更高版本的一部分。

验证您的目标是 .NET Framework 4.0 或更高版本。

于 2013-09-02T08:03:42.103 回答
1

不要使用dynamic关键字来解决最初的问题。在您的项目中添加对的引用并在文件顶部添加一个。EPPLususing OfficeOpenXml;

所以要么:

using OfficeOpenXml;
// ...
ExcelPackage excelPackage = new ExcelPackage();

或者

OfficeOpenXml.ExcelPackage excelPackage = new OfficeOpenXml.ExcelPackage();

顺便说一句,这是另一个错误,请替换

excelWorksheet.Cells("A1")

excelWorksheet.Cells["A1"]...

我假设这是从 VB.NET 转换为 C#。

于 2013-09-02T08:04:08.477 回答
0

动态驻留在系统命名空间中。你应该using System在顶部添加。

和 ExcelPackageMicrosoft.Office.Interop.Excel

于 2013-09-02T08:02:44.777 回答