【问题标题】:How to merge Worksheets from Multiple Workbooks into New WorkBook如何将多个工作簿中的工作表合并到新工作簿中
【发布时间】:2018-12-11 16:28:12
【问题描述】:

我想合并来自多个工作簿的多个工作表的数据。 例如,我有多个带有多个工作表的工作簿。

所以考虑我想将“WorkBook1”的“Worksheet1”中的数据和“Workbook2”的“Worksheet2”中的数据分别合并到新“WorkBook”的“NewWorkSheet”中。我想以一种将数据插入到“NewWorkSheet”中的方式来执行此操作,就像“Worksheet1”中的前 20 行一样 下一个 20 来自“Worksheet2”等等...

我只能从一个工作表合并到一个新工作表,但不能从其他工作表合并。

Workbook xlWorkbookDLA3 = xlApp.Workbooks.Open(dropBoxPath + "Week49DLA3.xlsm");
Worksheet worksheetDLA3 = xlWorkbookDLA3.Worksheets["Wed-A"];

Workbook xlWorkbookDLA4 = xlApp.Workbooks.Open(dropBoxPath + "Week49DLA4.xlsm");
Worksheet worksheetDLA4 = xlWorkbookDLA4.Worksheets["Thurs-A"];

Workbook destionationworkBook = xlApp.Workbooks.Open(dropBoxPath + "Test.xlsm");
Worksheet destworkSheet = destionationworkBook.Worksheets["Sheet2"];

Microsoft.Office.Interop.Excel.Range from, to;


from = worksheetDLA3.Range["B7:S7"].EntireColumn;
to = destworkSheet.Range["B7:S7"].EntireColumn;

from.Copy(to);


destionationworkBook.SaveAs(@"C:\Users\ashish.mokadam\Desktop\DropBox\Test" + ".xlsm");

【问题讨论】:

  • 由于您的代码包含Microsoft.Office.Interop.Excel.Range,我猜这是针对 Excel 的,并且您正在使用 Interop 库。您可能想提及这一点(并以这种方式标记您的问题)。

标签: c# excel excel-interop


【解决方案1】:

对于您希望复制的每个后续工作表(注意,对于第一个工作表,NOT),在“from.Copy(to); 之间插入以下代码示例。 "和 "destinationworkBook.SaveAs(...":

     var destination_start_row = destworkSheet.UsedRange.Rows.Count + 1;  // + 1 because Excel is 1-indexed
     var source_used_rows      = worksheetDLA4.UsedRange.Rows.Count;

     from = worksheetDLA4.Range["B1:S" + source_used_rows];
     to   = destworkSheet.Range["B" + destination_start_row + ":S" + destination_start_row + source_used_rows];
     from.Copy(to);

问题是您试图将整个列从源工作表复制到目标工作表,从而覆盖目标工作表中的值。此代码仅复制一系列单元格,而不是整列数据。

另外,您的变量名称“destionationworkBook”中有错字。它应该是“destinationworkBook”。

【讨论】:

  • 嗨凯尔.. 是否可以选择特定行然后将其复制到新行?
  • 当然,@ashish。不要使用"B1:S" + source_used_rows,而是将1 替换为起始行号,并将source_used_rows 替换为结束行号。
  • @ashish - 如果答案可以解决您的原始问题,请务必将答案标记为“已接受”。
  • 谢谢凯尔。有一个小问题,它也包括空行。你能告诉我在阅读工作表时如何排除空行吗?
  • @ashish:这是因为文件中的某一点或另一点已经“触及”了一些行,即使单元格中没有数据。您可能需要通过调查每个单元格中的值来手动排除“空”行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-24
  • 2021-08-09
相关资源
最近更新 更多