posts - 2, comments - 27, trackbacks - 0, articles - 60
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          多Excel合并的一種處理辦法

          Posted on 2011-09-03 09:23 ZhouFeng 閱讀(446) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
          前幾天,接到一項(xiàng)任務(wù),要對(duì)一批EXCEL數(shù)據(jù)進(jìn)行處理,它們只是內(nèi)容不一樣,結(jié)構(gòu)都是一致的,主要是合并那所有的數(shù)據(jù),差不多有近百個(gè)文件。以前也做過,只不過沒有這么多,之前用的辦法是借助于ACCESS來(lái)做的,把EXCEL一個(gè)個(gè)的導(dǎo)入到ACCESS里面,然后處理好了再導(dǎo)出到EXCEL,或是導(dǎo)出到EXCEL中再進(jìn)行處理,這次文件有點(diǎn)多,要是一個(gè)一個(gè)的導(dǎo)也可以完成,只是感覺太不科學(xué)了,老在重復(fù)做一些枯燥簡(jiǎn)單的事情,所以就想到用程序的方法交給計(jì)算機(jī)實(shí)現(xiàn)了,想過用EXCEL的VBA來(lái)做,可我不太熟悉,之前用JAVA做過一個(gè)程序來(lái)處理這樣的數(shù)據(jù),可是沒有在現(xiàn)在計(jì)算機(jī)上,只得重新做了,于是還是考慮用JAVA來(lái)實(shí)現(xiàn),下載jxl庫(kù)(http://jexcelapi.sourceforge.net/),用來(lái)處理EXCEL,剛開始從EXCEL中讀取數(shù)據(jù)沒有問題,寫EXCEL文件的時(shí)候,老是用EXCEL打不開,后來(lái)干脆換了種方法,直接寫成文本文件的格式,然后將文本文件用EXCEL打開,我想這樣來(lái)處理更簡(jiǎn)單一些,下面是我寫的一些代碼
          public class Merge {

              
          public static void main(String[] args) {
                  File outFile 
          = new File("e:\\out.txt");
                  
                  File workdir 
          = new File("e:\\workdatas");
                  File[] files 
          = workdir.listFiles();
                  
                  BufferedWriter output 
          = null;

                  Merge app 
          = new Merge();
                  String str 
          = null;
                  
                  
          if (!outFile.exists()){
                      
          try {
                          outFile.createNewFile();
                          output 
          = new BufferedWriter(new FileWriter(outFile));
                          
          for(File f:files){
                              System.out.println(f.getName());
                              str 
          = app.readExcel(f);
                              output.write(str);
                          }
                          output.close();
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
              
              
          public String readExcel(File file){   
                  StringBuffer sb 
          = new StringBuffer();   
                     
                  Workbook wb 
          = null;   
                  
          try {   
                      
          //構(gòu)造Workbook(工作薄)對(duì)象   
                      wb=Workbook.getWorkbook(file);   
                  } 
          catch (BiffException e) {   
                      e.printStackTrace();   
                  } 
          catch (IOException e) {   
                      e.printStackTrace();   
                  }   
                     
                  
          if(wb==null)   
                      
          return null;   
                     
                  
          //獲得了Workbook對(duì)象之后,就可以通過它得到Sheet(工作表)對(duì)象了   
                  Sheet sheet = wb.getSheet(0);
                  
          int rsColumns = sheet.getColumns();
                  
          int rsRows = sheet.getRows();
                  
                  
          //rows從1開始,不包含標(biāo)題行
                  for(int i=1;i<rsRows;i++){
                      
          for(int j=0;j<rsColumns;j++){
                          String cellString 
          = sheet.getCell(j, i).getContents();
                          sb.append(cellString).append(
          "\t");
                      }
                      sb.append(
          "\r\n");
                  }
                  wb.close();
                  
          return sb.toString();   
              }
          }
          程序很小,沒怎么考慮結(jié)構(gòu),可能有些處理方式?jīng)]有設(shè)計(jì)好,不過目前只能在開發(fā)環(huán)境中運(yùn)行,沒有設(shè)計(jì)成發(fā)行的版本,可以修改成命令行方式下的參數(shù)模式,或是做成一個(gè)簡(jiǎn)單的窗口模式,因?yàn)樾枰Y(jié)果數(shù)據(jù)時(shí)間有些緊迫,所以跑完這個(gè)代碼后,就沒有繼續(xù)修改了,如果哪天有時(shí)間,再來(lái)完善一下。也許可以再考慮一個(gè)VBA的版本
          先貼在這里,就當(dāng)是給自己做個(gè)筆記吧。如果上面的內(nèi)容能為他人提供一點(diǎn)參考,我很榮幸
          主站蜘蛛池模板: 五原县| 谢通门县| 钟山县| 南平市| 南充市| 五华县| 清新县| 莱阳市| 富裕县| 凤城市| 宁武县| 龙里县| 浑源县| 涟源市| 南开区| 宁陵县| 阜平县| 海盐县| 永福县| 灵台县| 南投市| 鄢陵县| 霍邱县| 海盐县| 武乡县| 湟中县| 保靖县| 绥宁县| 新安县| 平塘县| 富民县| 庆城县| 尉犁县| 景东| 巴彦淖尔市| 清苑县| 双峰县| 礼泉县| 行唐县| 永川市| 公主岭市|