• 多個excel文件合并到一個excel文件


    各位大俠下午好:  
       
      小弟在把多個由水晶報表導出的excel文件合并到一個excel文件的時候發現有一下問題:  
       
      圖片和表格重疊在一起,也就是說報表的圖形遮住了表格文字。如果我分別創建幾個excel文件,每個文件里都有圖片和文字。用同樣的方法(代碼如下)卻沒有問題(圖片和文字是分開的)。請問各位大哥該如何解決這一問題。多謝!!!  
       
       
      private   void   MergeExcelFiles(string   fileName,   System.Collections.ArrayList    
      files)  
      {  
      Excel.Application   exlApp   =   new   Excel.ApplicationClass();  
       
      exlApp.Application.SheetsInNewWorkbook   =   1;  
      Excel.Workbook   excelWorkBook   =    
      exlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);  
      excelWorkBook   =   exlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);  
      Excel.Worksheet   excelWorkSheet   =    
      (Excel.Worksheet)excelWorkBook.ActiveSheet;  
      excelWorkBook.Saved   =   true;  
      excelWorkBook.SaveCopyAs(fileName);  
      excelWorkBook.Close(null,   null,   null);  
      excelWorkBook   =   null;  
      excelWorkSheet   =   null;  
       
      exlApp.Application.Visible   =   false;  
      exlApp.Application.AlertBeforeOverwriting   =   false;  
       
      object   missing   =   System.Reflection.Missing.Value;  
      Excel.Workbook   wkBookDest;  
      Excel.Workbook   wkBookOrign;  
       
      try  
      {  
      wkBookDest   =   exlApp.Workbooks.Open(fileName,    
      missing,   false,   missing,   missing,   missing,  
      missing,missing,   missing,true,   missing,  
      missing,   missing,   missing,   missing);  
       
       
      for(int   i=0;   i<   files.Count;   i++)  
      {  
       
      string   OrignfileName   =   files[i].ToString();  
       
      wkBookOrign   =   exlApp.Workbooks.Open(OrignfileName,  
      missing,   true,   missing,   missing,   missing,  
      missing,   missing,   missing,   false,   missing,    
      missing,   missing,   missing,   missing);  
       
       
      int   nOrignSheetsCount   =   wkBookOrign.Worksheets.Count;  
      int   nDestSheetsCount   =   wkBookDest.Worksheets.Count;  
       
      Excel.Worksheet   wkSheetDest;  
       
      wkSheetDest   =   wkBookDest.Worksheets.Add(missing,    
      wkBookDest.Worksheets[nDestSheetsCount],    
      nOrignSheetsCount,    
      Excel.XlSheetType.xlWorksheet)   as   Excel.Worksheet;  
       
       
      for(int   j=1;   j<=   nOrignSheetsCount;   j++)  
      {  
      Excel.Worksheet   wkSheetOrign   =   wkBookOrign.Worksheets[j]   as    
      Excel.Worksheet;  
       
      wkSheetDest   =   wkBookDest.Worksheets[nDestSheetsCount   +   j]   as    
      Excel.Worksheet;  
      wkSheetDest.Activate();  
      wkSheetDest.Name   =   GetSheetName(OrignfileName);  
      Excel.Range   range   =    
      wkSheetOrign.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell,   missing);  
       
      int   nRow   =   range.Row;  
      int   nColumn   =   range.Column;  
       
      Excel.Range   rngOrign   =    
      wkSheetOrign.get_Range(wkSheetOrign.Cells[1,1],wkSheetOrign.Cells[nRow,    
      nColumn]);  
       
      Excel.Range   rngDest   =   wkSheetDest.get_Range(wkSheetDest.Cells[1,1],    
      wkSheetDest.Cells[nRow,   nColumn]);  
       
      rngOrign.Copy(missing);  
      wkSheetDest.Paste(rngDest,   missing);  
      wkBookDest.Save();  
      }  
      wkBookOrign.Close(false,   null,   null);  
      }  
       
      Excel.Worksheet   temp   =   (Excel.Worksheet)(wkBookDest.Worksheets[1]);  
      temp.Delete();  
      temp   =   null;  
       
      wkBookDest.Save();  
      wkBookDest.Close(null,   null,   null);  
      }  
      catch(Exception   ex)  
      {  
      CommonModule.Functions.ShowErrorMessageBox(ex.Message,   "保存錯誤");  
      }  
      finally  
      {  
      wkBookDest   =   null;  
      wkBookOrign   =   null;  
      exlApp.Quit();  
      exlApp   =   null;  
       
      GC.Collect();  
      }  
       
      CommonModule.Functions.DeleteTempFiles();  
      }  
      private   string   GetSheetName(string   fullName)  
      {  
      string   fileName   =   new   System.IO.FileInfo(fullName).Name;  
      int   index   =   fileName.IndexOf(".");  
      string   sheetName   =   fileName.Substring(0,   index);  
      return   sheetName;  
      }   
       
  • 相关阅读:
    用简单的方法解决问题
    记一次调试
    工作笔记还是蛮有用
    35岁往上做什么
    2013年个人总结
    一个C++宏定义与枚举定义重复的编译错误
    动态库的麻烦之处
    谈谈软件项目的dependency
    创建pathing jar
    谈谈patch strategy
  • 原文地址:https://www.cnblogs.com/twttafku/p/1031942.html
Copyright © 2020-2023  润新知