- 合并代码如下:
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Text;
- usingSystem.Reflection;
- usingExcel=Microsoft.Office.Interop.Excel;
- namespaceConsoleApplication20
- {
- //添加引用-COM-MicroSoftExcel11.0ObjectLibery
- classProgram
- {
- staticvoidMain(string[]args)
- {
- //M为表格宽度标志(Excel中的第M列为最后一列),3为表头高度
- MergeExcel.DoMerge(newstring[]
- {
- @"E:/excel/类型A/公司A.xls",
- @"E:/excel/类型A/公司B.xls"
- },
- @"E:/excel/类型A/合并测试.xls","M",3);
- MergeExcel.DoMerge(newstring[]
- {
- @"E:/excel/类型B/统计表A.xls",
- @"E:/excel/类型B/统计表B.xls"
- },
- @"E:/excel/类型B/合并测试.xls","I",4);
- }
- }
- publicclassMergeExcel
- {
- Excel.Applicationapp=newMicrosoft.Office.Interop.Excel.ApplicationClass();
- //保存目标的对象
- Excel.WorkbookbookDest=null;
- Excel.WorksheetsheetDest=null;
- //读取数据的对象
- Excel.WorkbookbookSource=null;
- Excel.WorksheetsheetSource=null;
- string[]_sourceFiles=null;
- string_destFile=string.Empty;
- string_columnEnd=string.Empty;
- int_headerRowCount=1;
- int_currentRowCount=0;
- publicMergeExcel(string[]sourceFiles,stringdestFile,stringcolumnEnd,intheaderRowCount)
- {
- bookDest=(Excel.WorkbookClass)app.Workbooks.Add(Missing.Value);
- sheetDest=bookDest.Worksheets.Add(Missing.Value,Missing.Value,Missing.Value,Missing.Value)asExcel.Worksheet;
- sheetDest.Name="Data";
- _sourceFiles=sourceFiles;
- _destFile=destFile;
- _columnEnd=columnEnd;
- _headerRowCount=headerRowCount;
- }
- ///
- ///打开工作表
- ///
- ///
- voidOpenBook(stringfileName)
- {
- bookSource=app.Workbooks._Open(fileName,Missing.Value,Missing.Value,Missing.Value,Missing.Value
- ,Missing.Value,Missing.Value,Missing.Value,Missing.Value
- ,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
- sheetSource=bookSource.Worksheets[1]asExcel.Worksheet;
- }
- ///
- ///关闭工作表
- ///
- voidCloseBook()
- {
- bookSource.Close(false,Missing.Value,Missing.Value);
- }
- ///
- ///复制表头
- ///
- voidCopyHeader()
- {
- Excel.Rangerange=sheetSource.get_Range("A1",_columnEnd+_headerRowCount.ToString());
- range.Copy(sheetDest.get_Range("A1",Missing.Value));
- _currentRowCount+=_headerRowCount;
- }
- ///
- ///复制数据
- ///
- voidCopyData()
- {
- intsheetRowCount=sheetSource.UsedRange.Rows.Count;
- Excel.Rangerange=sheetSource.get_Range(string.Format("A{0}",_headerRowCount+1),_columnEnd+sheetRowCount.ToString());
- range.Copy(sheetDest.get_Range(string.Format("A{0}",_currentRowCount+1),Missing.Value));
- _currentRowCount+=range.Rows.Count;
- }
- ///
- ///保存结果
- ///
- voidSave()
- {
- bookDest.Saved=true;
- bookDest.SaveCopyAs(_destFile);
- }
- ///
- ///退出进程
- ///
- voidQuit()
- {
- app.Quit();
- }
- ///
- ///合并
- ///
- voidDoMerge()
- {
- boolb=false;
- foreach(stringstrFilein_sourceFiles)
- {
- OpenBook(strFile);
- if(b==false)
- {
- CopyHeader();
- b=true;
- }
- CopyData();
- CloseBook();
- }
- Save();
- Quit();
- }
- ///
- ///合并表格
- ///
- ///源文件
- ///目标文件
- ///最后一列标志
- ///表头行数
- publicstaticvoidDoMerge(string[]sourceFiles,stringdestFile,stringcolumnEnd,intheaderRowCount)
- {
- newMergeExcel(sourceFiles,destFile,columnEnd,headerRowCount).DoMerge();
- }
- }
- }
C#合并多个结构一样的Excel
最新推荐文章于 2024-08-08 17:58:07 发布
本文介绍了一个使用C#实现的Excel表格合并程序。通过指定源文件路径、目标文件路径、最后一列标志及表头行数,可以将多个Excel文件的数据合并到一个新的文件中。此程序利用了Microsoft.Office.Interop.Excel库来操作Excel文件。
1062

被折叠的 条评论
为什么被折叠?



