首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅复制Epplus值中的工作表

仅复制Epplus值中的工作表
EN

Stack Overflow用户
提问于 2017-08-09 05:33:33
回答 2查看 6K关注 0票数 1

我正在使用Epplus从一本工作簿中复制一个工作表,并将它粘贴到另一个工作簿中,通过使用下面的代码,我可以成功地复制工作表。

代码语言:javascript
复制
  ExcelPackage masterPackage = new ExcelPackage(new FileInfo(@"C:\\Users\\350154\\Desktop\\vb workouts\\testsample.xlsx"));
  ExcelPackage pckg = new ExcelPackage(new FileInfo("C:\\Users\\350154\\Desktop\\vb workouts\\as.xlsx"));
  string workSheetName = pckg.Workbook.Worksheets[1].Name;
   ExcelWorksheet pck = pckg.Workbook.Worksheets[1];
   pck.ConditionalFormatting.RemoveAll();
   masterPackage.Workbook.Worksheets.Add(workSheetName, pck);

代码复制工作表sucessfully.But,复制的工作表的cells.So值中有公式,而不是在新的excel中复制,请帮助我解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-09 08:32:27

如果您只是想将一个电子表格中的值复制到另一个电子表格中的新表中,请尝试如下:

代码语言:javascript
复制
public static void CopySheetValues(string sourcePath, string sheetName, string destPath)
{
    using (var src = new ExcelPackage(new FileInfo(sourcePath)))
    using (var dest = new ExcelPackage(new FileInfo(destPath)))
    {
        var wsSrc = src.Workbook.Worksheets[sheetName];
        var wsDest = dest.Workbook.Worksheets[wsSrc.Name] ?? dest.Workbook.Worksheets.Add(wsSrc.Name);

        for (var r = 1; r <= wsSrc.Dimension.Rows; r++)
        {
            for (var c = 1; c <= wsSrc.Dimension.Columns; c++)
            {
                var cellSrc = wsSrc.Cells[r, c];
                var cellDest = wsDest.Cells[r, c];

                // Copy value
                cellDest.Value = cellSrc.Value;

                // Copy cell properties
                cellDest.Style.Numberformat = cellSrc.Style.Numberformat;
                cellDest.Style.Font.Bold = cellSrc.Style.Font.Bold;
                // TODO... Add any additional properties that you may want to copy over
            }
        }

        dest.Save();
    }
}

更新:更新了示例代码,以显示如何将格式设置从源复制到目标工作表

票数 3
EN

Stack Overflow用户

发布于 2018-05-10 14:36:56

谢谢皮特。但是,在我寻找另一个问题时,我找到了一种将整个工作表复制到另一个工作簿的方法。https://github.com/JanKallman/EPPlus/issues/94

更改下面一行以将工作表添加到工作簿中。

代码语言:javascript
复制
var wsDest = m_GeneratedHeader.Workbook.Worksheets[wsSrc.Name] ?? m_GeneratedHeader.Workbook.Worksheets.Add(wsSrc.Name, wsSrc);

不需要使用这两个“for”循环来迭代行和列来复制每个属性。添加工作表将复制单元格样式、字体样式、合并单元格等。为我工作过。

请注意,这是在EPPlus 4.5.0.1之后引入的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45582359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档