C#合并多个结构一样的Excel

本文介绍了一个使用C#实现的Excel表格合并程序。通过指定源文件路径、目标文件路径、最后一列标志及表头行数,可以将多个Excel文件的数据合并到一个新的文件中。此程序利用了Microsoft.Office.Interop.Excel库来操作Excel文件。
  1. 合并代码如下:
  2. usingSystem;
  3. usingSystem.Collections.Generic;
  4. usingSystem.Text;
  5. usingSystem.Reflection;
  6. usingExcel=Microsoft.Office.Interop.Excel;
  7. namespaceConsoleApplication20
  8. {
  9. //添加引用-COM-MicroSoftExcel11.0ObjectLibery
  10. classProgram
  11. {
  12. staticvoidMain(string[]args)
  13. {
  14. //M为表格宽度标志(Excel中的第M列为最后一列),3为表头高度
  15. MergeExcel.DoMerge(newstring[]
  16. {
  17. @"E:/excel/类型A/公司A.xls",
  18. @"E:/excel/类型A/公司B.xls"
  19. },
  20. @"E:/excel/类型A/合并测试.xls","M",3);
  21. MergeExcel.DoMerge(newstring[]
  22. {
  23. @"E:/excel/类型B/统计表A.xls",
  24. @"E:/excel/类型B/统计表B.xls"
  25. },
  26. @"E:/excel/类型B/合并测试.xls","I",4);
  27. }
  28. }
  29. publicclassMergeExcel
  30. {
  31. Excel.Applicationapp=newMicrosoft.Office.Interop.Excel.ApplicationClass();
  32. //保存目标的对象
  33. Excel.WorkbookbookDest=null;
  34. Excel.WorksheetsheetDest=null;
  35. //读取数据的对象
  36. Excel.WorkbookbookSource=null;
  37. Excel.WorksheetsheetSource=null;
  38. string[]_sourceFiles=null;
  39. string_destFile=string.Empty;
  40. string_columnEnd=string.Empty;
  41. int_headerRowCount=1;
  42. int_currentRowCount=0;
  43. publicMergeExcel(string[]sourceFiles,stringdestFile,stringcolumnEnd,intheaderRowCount)
  44. {
  45. bookDest=(Excel.WorkbookClass)app.Workbooks.Add(Missing.Value);
  46. sheetDest=bookDest.Worksheets.Add(Missing.Value,Missing.Value,Missing.Value,Missing.Value)asExcel.Worksheet;
  47. sheetDest.Name="Data";
  48. _sourceFiles=sourceFiles;
  49. _destFile=destFile;
  50. _columnEnd=columnEnd;
  51. _headerRowCount=headerRowCount;
  52. }
  53. ///
  54. ///打开工作表
  55. ///
  56. ///
  57. voidOpenBook(stringfileName)
  58. {
  59. bookSource=app.Workbooks._Open(fileName,Missing.Value,Missing.Value,Missing.Value,Missing.Value
  60. ,Missing.Value,Missing.Value,Missing.Value,Missing.Value
  61. ,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
  62. sheetSource=bookSource.Worksheets[1]asExcel.Worksheet;
  63. }
  64. ///
  65. ///关闭工作表
  66. ///
  67. voidCloseBook()
  68. {
  69. bookSource.Close(false,Missing.Value,Missing.Value);
  70. }
  71. ///
  72. ///复制表头
  73. ///
  74. voidCopyHeader()
  75. {
  76. Excel.Rangerange=sheetSource.get_Range("A1",_columnEnd+_headerRowCount.ToString());
  77. range.Copy(sheetDest.get_Range("A1",Missing.Value));
  78. _currentRowCount+=_headerRowCount;
  79. }
  80. ///
  81. ///复制数据
  82. ///
  83. voidCopyData()
  84. {
  85. intsheetRowCount=sheetSource.UsedRange.Rows.Count;
  86. Excel.Rangerange=sheetSource.get_Range(string.Format("A{0}",_headerRowCount+1),_columnEnd+sheetRowCount.ToString());
  87. range.Copy(sheetDest.get_Range(string.Format("A{0}",_currentRowCount+1),Missing.Value));
  88. _currentRowCount+=range.Rows.Count;
  89. }
  90. ///
  91. ///保存结果
  92. ///
  93. voidSave()
  94. {
  95. bookDest.Saved=true;
  96. bookDest.SaveCopyAs(_destFile);
  97. }
  98. ///
  99. ///退出进程
  100. ///
  101. voidQuit()
  102. {
  103. app.Quit();
  104. }
  105. ///
  106. ///合并
  107. ///
  108. voidDoMerge()
  109. {
  110. boolb=false;
  111. foreach(stringstrFilein_sourceFiles)
  112. {
  113. OpenBook(strFile);
  114. if(b==false)
  115. {
  116. CopyHeader();
  117. b=true;
  118. }
  119. CopyData();
  120. CloseBook();
  121. }
  122. Save();
  123. Quit();
  124. }
  125. ///
  126. ///合并表格
  127. ///
  128. ///源文件
  129. ///目标文件
  130. ///最后一列标志
  131. ///表头行数
  132. publicstaticvoidDoMerge(string[]sourceFiles,stringdestFile,stringcolumnEnd,intheaderRowCount)
  133. {
  134. newMergeExcel(sourceFiles,destFile,columnEnd,headerRowCount).DoMerge();
  135. }
  136. }
  137. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值