【问题标题】:Copy worksheet in Epplus Values only仅在 Epplus Values 中复制工作表
【发布时间】:2017-08-09 05:33:33
【问题描述】:

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

  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);

代码成功复制了工作表。但是复制的工作表在其单元格中有公式。所以没有在新的 excel 中复制的值请帮助我解决这个问题。

【问题讨论】:

    标签: epplus


    【解决方案1】:

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

    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();
        }
    }
    

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

    【讨论】:

    • 它同时工作如何将格式刷从源表应用到目标表
    • Pete 太好了,谢谢,但我无法复制单元格的背景颜色。
    【解决方案2】:

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

    您更改以下行以将工作表添加到工作簿。

    var wsDest = m_GeneratedHeader.Workbook.Worksheets[wsSrc.Name] ?? m_GeneratedHeader.Workbook.Worksheets.Add(wsSrc.Name, wsSrc);
    

    无需使用两个“for”循环来遍历行和列来复制每个属性。添加工作表将复制单元格样式、字体样式、合并单元格等...为我工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多