我正在使用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中的值请帮我解决这个问题。
答案 0 :(得分:0)
如果您只想将一个电子表格中的值复制到另一个电子表格中的新工作表中,请尝试以下操作:
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();
}
}
更新:示例代码已更新,以显示如何将格式从源复制到目标工作表
答案 1 :(得分:0)
谢谢@Pete。但我找到了一种方法将整个工作表复制到另一个工作簿,而我正在寻找另一个问题。 https://github.com/JanKallman/EPPlus/issues/94
您更改以下行以将工作表添加到工作簿。
var wsDest = m_GeneratedHeader.Workbook.Worksheets[wsSrc.Name] ?? m_GeneratedHeader.Workbook.Worksheets.Add(wsSrc.Name, wsSrc);
无需使用这两个&#39;循环遍历行和列以复制每个属性。添加工作表将复制单元格样式,字体样式,合并单元格等...为我工作。
请注意,这是在EPPlus 4.5.0.1之后引入的