【问题标题】:SpreadsheetGear - Issue with copying sheets from one Workbook to anotherSpreadsheetGear - 将工作表从一个工作簿复制到另一个工作簿的问题
【发布时间】:2019-01-14 04:53:30
【问题描述】:

我想合并多个工作簿中的所有工作表并将它们保存在一个 Excel 文件中。我正在尝试复制一个工作簿中的所有工作表,然后将工作簿保存到文件中。问题是 - 只有最后一张纸保存在文件中。下面是一些示例代码。

public static void ExportSheets(string documentFilePath, List<IWorkbook> workbooks)
        {
            if (workbooks.Count > 1)
            {
                var destinationSourceBook = workbooks[0];
                for (int i = 1; i < workbooks.Count; i++)
                {
                    var sourceWorkBook = workbooks[i];
                    for (int j = 0; j < sourceWorkBook.Sheets.Count; j++)
                    {
                        sourceWorkBook.Sheets[j].CopyAfter(destinationSourceBook.Sheets[destinationSourceBook.Sheets.Count - 1]);
                    }
                }
                destinationSourceBook.SaveAs(documentFilePath, FileFormat.OpenXMLWorkbook);
            }
            else if (workbooks.Count == 1)
            {
                workbooks[0].SaveAs(documentFilePath, FileFormat.OpenXMLWorkbook);
            }
        }

在调试时,我可以看到工作表被添加到destinationSourceBook.Sheets 集合中,但保存的Excel 文件中只有最后一个工作表。这样做的正确方法是什么?

谢谢

【问题讨论】:

    标签: c# spreadsheetgear


    【解决方案1】:

    工作表实际上已添加,但问题是工作表选项卡不可见(在 excel - 文件 -> 选项 -> 高级 -> 显示选项 -> 显示工作表选项卡复选框)。解决方案是将 Workbook.WindowInfo.DisplayWorkbookTabs 设置为 true。

            public static void ExportSheets(string documentFilePath, List<IWorkbook> workbooks)
            {
                if (workbooks.Count > 0)
                {
                    var destinationWorkbook = workbooks[0];
    
                    for (var i = 1; i < workbooks.Count; i++)
                    {
                        var sourceWorkBook = workbooks[i];
                        for (var j = 0; j < sourceWorkBook.Sheets.Count; j++)
                        {
                            sourceWorkBook.Sheets[j].CopyAfter(destinationWorkbook.Sheets[destinationWorkbook.Sheets.Count - 1]);
                        }
                    }
                    destinationWorkbook.WindowInfo.DisplayWorkbookTabs = true;
                    destinationWorkbook.SaveAs(documentFilePath, FileFormat.OpenXMLWorkbook);
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多