/// <summary> /// 承接段尾合并方法 /// </summary> /// <param name="obj"></param> private void DocParagraphMergeMethod(object obj) { try { FileMergeModel fileMergeModel = obj as FileMergeModel; //实例化Document对象 Document doc = new Document(); doc.InsertTextFromFile(fileMergeModel.mergeFileList[0].fileSrc, FileFormat.Auto); //遍历进行合并 for (var i = 1; i < fileMergeModel.mergeFileList.Count; i++) { Section lastSection = doc.LastSection;//获取doc的最后一个section Document currDoc = new Document(fileMergeModel.mergeFileList[i].fileSrc); //遍历currDoc的section和段落,将每一个段落添加到doc的最后一个section foreach (Section section in currDoc.Sections) { foreach (Paragraph paragraph in section.Paragraphs) { lastSection.Paragraphs.Add(paragraph.Clone() as Paragraph); } } } doc.SaveToFile(fileMergeModel.mergeFileSrc, FileFormat.Auto);//保存为新的文档 ShowMessage.ShowContent(ChangeLanguage.getLanguage("ExecutionCompleted"), showTitle); } catch (Exception ex) { ShowMessage.ShowError(ex.Message, showTitle); } }
/// <summary> /// 合并文件方法 /// </summary> /// <param name="obj"></param> private void MergeFileThread(object obj) { FileMergeModel fileMergeModel = obj as FileMergeModel; List <MergeModel> list = new List <MergeModel>(); list = fileMergeModel.mergeFileList; //文件判断 string outFile = fileMergeModel.mergeFileSrc; if (File.Exists(outFile)) { File.Delete(outFile); } using (FileStream fileOut = new FileStream(fileMergeModel.mergeFileSrc, FileMode.Create, FileAccess.ReadWrite)) { //转换为默认编码的流 BinaryWriter bw = new BinaryWriter(fileOut, Encoding.UTF8); foreach (MergeModel item in list) { try { //创建文件 FileStream fileStream = new FileStream(item.fileSrc, FileMode.Open, FileAccess.Read, FileShare.Read); //设置当前流的位置,即开始位置 fileStream.Seek(0, SeekOrigin.Begin); int fileData = 0; //指定byte数组大小 byte[] buffer = new byte[fileStream.Length]; //读取指定大小的流 if ((fileData = fileStream.Read(buffer, 0, buffer.Length)) > 0) { //将字节数组写入流 bw.Write(buffer, 0, fileData); } if (item.fileIndex == -1) { ShowMessage.ShowContent(ChangeLanguage.getLanguage("ExecutionCompleted"), showTitle); bw.Flush(); bw.Dispose(); bw.Close(); fileOut.Close(); } } catch (System.Exception ex) { ShowMessage.ShowError(ex.Message, showTitle); fileOut.Close(); return; } finally { } } } }
private void btn_Merge_Click(object sender, EventArgs e) { if (!RequiredVerification()) { return; } if (ShowMessage.ShowConfirm(ChangeLanguage.getLanguage("ConfirmExecution"), showTitle) == DialogResult.OK) { double totalSize = 0; FileMergeModel fileMergeModel = new FileMergeModel(); List <MergeModel> list = new List <MergeModel>(); foreach (ListViewItem item in lv_File.Items) { MergeModel model = new MergeModel(); model.fileSrc = item.SubItems[0].Text; model.fileName = item.SubItems[1].Text; model.fileExtension = item.SubItems[2].Text; model.fileLength = item.SubItems[3].Text; if (item.Index == lv_File.Items.Count - 1) { model.fileIndex = -1; } else { model.fileIndex = item.Index; } totalSize += double.Parse(model.fileLength); list.Add(model); } fileMergeModel.mergeFileList = list; fileMergeModel.mergeFilePath = txt_FilePath.Text; fileMergeModel.mergeFileName = txt_FileName.Text.Trim(); fileMergeModel.mergeFileExtension = lv_File.Items[0].SubItems[2].Text; fileMergeModel.mergeFileSrc = fileMergeModel.mergeFilePath + @"\" + fileMergeModel.mergeFileName + fileMergeModel.mergeFileExtension; if (totalSize > 21474836480) { ShowMessage.ShowContent(ChangeLanguage.getLanguage("MergeFileSizeLimit"), showTitle); return; } if (rbtn_WorkBook.Checked) { WorkBookMergeMethodInvoker mergeWorkBookMethod = new WorkBookMergeMethodInvoker(WorkBookMergeMethod); this.BeginInvoke(mergeWorkBookMethod, new object[] { fileMergeModel }); } else if (rbtn_WorkSheet.Checked) { WorkSheetMergeMethodInvoker mergeWorkSheetMethod = new WorkSheetMergeMethodInvoker(WorkSheetMergeMethod); this.BeginInvoke(mergeWorkSheetMethod, new object[] { fileMergeModel }); } } }
/// <summary> /// 添加新页合并方法 /// </summary> /// <param name="obj"></param> private void DocPageMergeMethod(object obj) { try { FileMergeModel fileMergeModel = obj as FileMergeModel; //实例化Document对象 Document doc = new Document(); foreach (var mergeFile in fileMergeModel.mergeFileList) { //使用InsertTextFromFile方法将文档合并到已创建的文档对象中 doc.InsertTextFromFile(mergeFile.fileSrc, FileFormat.Auto); } doc.SaveToFile(fileMergeModel.mergeFileSrc, FileFormat.Auto); //保存文档 ShowMessage.ShowContent(ChangeLanguage.getLanguage("ExecutionCompleted"), showTitle); } catch (Exception ex) { ShowMessage.ShowError(ex.Message, showTitle); } }
/// <summary> /// 工作簿合并 /// </summary> /// <param name="obj"></param> private void WorkBookMergeMethod(object obj) { FileMergeModel fileMergeModel = obj as FileMergeModel; Workbook workBook = new Workbook(); try { workBook.CreateEmptySheets(1); if (fileMergeModel != null && fileMergeModel.mergeFileList != null) { foreach (var mergeFile in fileMergeModel.mergeFileList) { Workbook subWorkBook = new Workbook(); subWorkBook.LoadFromFile(mergeFile.fileSrc); workBook.Worksheets.AddCopy(subWorkBook.Worksheets); subWorkBook.Dispose(); } } workBook.Worksheets.RemoveAt(0); if (fileMergeModel.mergeFileExtension == ".xls") { workBook.SaveToFile(fileMergeModel.mergeFileSrc, ExcelVersion.Version97to2003); } else { workBook.SaveToFile(fileMergeModel.mergeFileSrc, ExcelVersion.Version2007); } workBook.Dispose(); ShowMessage.ShowContent(ChangeLanguage.getLanguage("ExecutionCompleted"), showTitle); } catch (Exception ex) { workBook.Dispose(); ShowMessage.ShowError(ex.Message, showTitle); } }
/// <summary> /// 工作表合并 /// </summary> /// <param name="obj"></param> private void WorkSheetMergeMethod(object obj) { FileMergeModel fileMergeModel = obj as FileMergeModel; try { if (fileMergeModel != null && fileMergeModel.mergeFileList != null) { int index = 0; foreach (var mergeFile in fileMergeModel.mergeFileList) { string filePath = fileMergeModel.mergeFilePath + @"\" + fileMergeModel.mergeFileName + index + fileMergeModel.mergeFileExtension; //新建工作簿 Workbook workBook = new Workbook(); workBook.CreateEmptySheets(1); //需合并的工作簿 Workbook subWorkBook = new Workbook(); subWorkBook.LoadFromFile(mergeFile.fileSrc); //同步第一个工作表并生成 workBook.Worksheets.AddCopy(subWorkBook.Worksheets); int sheetCount = workBook.Worksheets.Count; for (int i = sheetCount - 1; i >= 0; i--) { if (i != 1) { workBook.Worksheets.RemoveAt(i); } } if (fileMergeModel.mergeFileExtension == ".xls") { workBook.SaveToFile(filePath, ExcelVersion.Version97to2003); } else { workBook.SaveToFile(filePath, ExcelVersion.Version2007); } workBook.LoadFromFile(filePath); Worksheet workSheet = workBook.Worksheets[0]; //遍历工作簿中的工作表 int subIndex = 0; foreach (Worksheet subSheet in subWorkBook.Worksheets) { if (subIndex > 0) { //复制subSheet工作表内容到合并工作表(workSheet)的指定区域中->追加 subSheet.AllocatedRange.Copy(workSheet.Range[workSheet.LastRow + 1, 1]); } subIndex++; } subWorkBook.Dispose(); workSheet.Name = "Merged sheet"; if (fileMergeModel.mergeFileExtension == ".xls") { workBook.SaveToFile(filePath, ExcelVersion.Version97to2003); } else { workBook.SaveToFile(filePath, ExcelVersion.Version2007); } workBook.Dispose(); index++; } ShowMessage.ShowContent(ChangeLanguage.getLanguage("ExecutionCompleted"), showTitle); } } catch (Exception ex) { ShowMessage.ShowError(ex.Message, showTitle); } }