IWorkbook DoMerge(Dictionary <string, string> _sourceFiles, string targetFileName) { XSSFWorkbook target = new XSSFWorkbook(); int xlsFileIdx = 0; foreach (string strFile in _sourceFiles.Keys) { xlsFileIdx++; XSSFWorkbook sourceXls = new XSSFWorkbook(strFile); if (xlsFileIdx == 1) { target = new XSSFWorkbook(); } for (int i = 0; i < sourceXls.NumberOfSheets; i++) { XSSFSheet sheet1 = sourceXls.GetSheetAt(i) as XSSFSheet; sheet1.CopyTo(target, _sourceFiles[strFile], true, true); } } return(target); }
static void Main(string[] args) { Console.WriteLine("Hello World! Please Wait while processing..."); //Excel worksheet combine example //Note: This example does not check for duplicate sheet names. Your test files should have different sheet names. XSSFWorkbook book1 = new XSSFWorkbook(new FileStream("file1.xlsx", FileMode.Open)); XSSFWorkbook book2 = new XSSFWorkbook(new FileStream("file2.xlsx", FileMode.Open)); XSSFWorkbook product = new XSSFWorkbook(); for (int i = 0; i < book1.NumberOfSheets; i++) { XSSFSheet sheet1 = book1.GetSheetAt(i) as XSSFSheet; sheet1.CopyTo(product, sheet1.SheetName, true, true); } for (int j = 0; j < book2.NumberOfSheets; j++) { XSSFSheet sheet2 = book2.GetSheetAt(j) as XSSFSheet; sheet2.CopyTo(product, sheet2.SheetName, true, true); } product.Write(new FileStream("test.xlsx", FileMode.Create, FileAccess.ReadWrite)); }