使用EPPlus创建多个pivottable

时间:2013-05-21 22:37:27

标签: c# excel epplus

我刚开始使用EPPLus Lib通过C#创建“复杂”工作簿,我在尝试创建两个数据透视表时遇到了一些麻烦。

第一个创建很好,但是当我尝试创建第二个时它不会抛出任何异常但是当我尝试使用excel打开worknook时它会说

  

“Excel在'myworkbook.xlsx'中找到了不可读的内容。你想要吗?   恢复本工作簿的内容?如果您相信这个来源   工作簿,点击“

当我按'是'时:

  

修复日志 - >   已移除的功能:来自/xl/pivotTables/pivotTable2.xml的数据透视表部分(数据透视表>视图)已删除   记录:/xl/workbook.xml部分(工作簿)中的工作簿属性   修复记录:/xl/workbook.xml部分的工作簿属性   (工作簿)

这是我构建的代码:

CreatePivotTable("Pivot1", "Pivot1", rng1);
CreatePivotTable("Pivot2", "Pivot2", rng2);
    public void CreatePivotTable(string pivotSheet, string pivotName, ExcelRangeBase srcRange)
    {
        if (m_wb.Worksheets[pivotSheet] != null)
            m_wb.Worksheets.Delete(pivotSheet);

        var ws = m_wb.Worksheets.Add(pivotSheet);

        var pivot = ws.PivotTables.Add(ws.Cells["A1"], srcRange, pivotName);            

    }

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

出了什么问题,我没有把它放在我的问题中,因为我之前正在重新打开工作簿,就像这样:

    CreatePivotTable("Pivot1", "Pivot1", rng1);
    Save();
    CreatePivotTable("Pivot2", "Pivot2", rng2);

    private void Save()
    {
        m_writer.Save();
        m_writer.OpenWorkbook ();
    }

由于epplus的save方法关闭了工作簿,程序失去了某种参考,或者只是丢失了一些信息。

简而言之,要正确使用epplus,您应该在保存和关闭工作簿之前编写所需的所有内容,但重新打开它并不好。

谢谢。