EPPlus 无法打开 RDLC 渲染到 EXCELOPENXML
EPPPlus cannot open RDLC rendered to EXCELOPENXML
有没有人知道使用根据 rdlc 报告创建的 EPPlus 打开 xlsx 文件,甚至有解决方案。
目前,当我尝试执行此操作时,当我尝试访问工作表时出现空异常。
// filename is the xlsx file created by exported rdlc to excel
FileInfo newFile = new FileInfo(filename);
ExcelPackage pck = new ExcelPackage(newFile);
// I get error here
pck.Workbook.Worksheets.Add("New Sheet");
如果您打算添加到文件中,那么您使用了错误的构造函数。您现在使用的是根据模板创建新包。你想要的是这个(没有额外的布尔值),它将直接打开文件:
ExcelPackage pck = new ExcelPackage(newFile);
对评论的回复
@A.Ellwood 我刚刚用你发布的文件试了一下,对我来说效果很好。这是我使用的代码:
[TestMethod]
public void RDLC_Test()
{
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[]
{
new DataColumn("Col1", typeof (int)), new DataColumn("Col2", typeof (int)),
new DataColumn("Col3", typeof (object))
});
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow();
row[0] = i;
row[1] = i*10;
row[2] = Path.GetRandomFileName();
datatable.Rows.Add(row);
}
var fi = new FileInfo(@"c:\temp\Report1.xlsx");
using (var pck = new ExcelPackage(fi))
{
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
pck.Save();
}
}
有没有人知道使用根据 rdlc 报告创建的 EPPlus 打开 xlsx 文件,甚至有解决方案。
目前,当我尝试执行此操作时,当我尝试访问工作表时出现空异常。
// filename is the xlsx file created by exported rdlc to excel
FileInfo newFile = new FileInfo(filename);
ExcelPackage pck = new ExcelPackage(newFile);
// I get error here
pck.Workbook.Worksheets.Add("New Sheet");
如果您打算添加到文件中,那么您使用了错误的构造函数。您现在使用的是根据模板创建新包。你想要的是这个(没有额外的布尔值),它将直接打开文件:
ExcelPackage pck = new ExcelPackage(newFile);
对评论的回复
@A.Ellwood 我刚刚用你发布的文件试了一下,对我来说效果很好。这是我使用的代码:
[TestMethod]
public void RDLC_Test()
{
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[]
{
new DataColumn("Col1", typeof (int)), new DataColumn("Col2", typeof (int)),
new DataColumn("Col3", typeof (object))
});
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow();
row[0] = i;
row[1] = i*10;
row[2] = Path.GetRandomFileName();
datatable.Rows.Add(row);
}
var fi = new FileInfo(@"c:\temp\Report1.xlsx");
using (var pck = new ExcelPackage(fi))
{
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
pck.Save();
}
}