瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          jxl操作excel例子(轉(zhuǎn))

          Posted on 2009-03-31 17:16 瘋狂 閱讀(5290) 評論(2)  編輯  收藏 所屬分類: java

          package com.dbs.vote.common.test.excel;

          import java.io.File;  
          import java.io.FileOutputStream;  
          import java.io.OutputStream;  
          import java.util.ArrayList;  
          import java.util.Date;  
           
          import jxl.Cell;  
          import jxl.CellType;  
          import jxl.Sheet;  
          import jxl.Workbook;  
          import jxl.WorkbookSettings;  
          import jxl.format.Alignment;  
          import jxl.format.Border;  
          import jxl.format.BorderLineStyle;  
          import jxl.format.Colour;  
          import jxl.format.VerticalAlignment;  
          import jxl.write.Formula;  
          import jxl.write.Label;  
          import jxl.write.NumberFormat;  
          import jxl.write.WritableCellFeatures;  
          import jxl.write.WritableCellFormat;  
          import jxl.write.WritableFont;  
          import jxl.write.WritableSheet;  
          import jxl.write.WritableWorkbook;  
          import jxl.write.WriteException;  
           
          public class JExcelUtils {  
           
              /** 
               * 生成Excel文件 
               * @param path         文件路徑 
               * @param sheetName    工作表名稱 
               * @param dataTitles   數(shù)據(jù)標(biāo)題 
               */ 
             public void createExcelFile(String path,String sheetName,String[] dataTitles){  
                 WritableWorkbook workbook;  
                 try{  
                     OutputStream os=new FileOutputStream(path);   
                     workbook=Workbook.createWorkbook(os);   
           
                     WritableSheet sheet = workbook.createSheet(sheetName, 0); //添加第一個工作表  
                     initialSheetSetting(sheet);  
                       
                     Label label;  
                     for (int i=0; i<dataTitles.length; i++){  
                         //Label(列號,行號,內(nèi)容,風(fēng)格)  
                         label = new Label(i, 0, dataTitles[i],getTitleCellFormat());   
                         sheet.addCell(label);   
                     }  
           
                     //插入一行  
                     insertRowData(sheet,1,new String[]{"200201001","張三","100","60","100","260"},getDataCellFormat(CellType.STRING_FORMULA));  
                       
                     //一個一個插入行  
                     label = new Label(0, 2,"200201002",getDataCellFormat(CellType.STRING_FORMULA));   
                     sheet.addCell(label);  
                       
                     label = new Label(1, 2,"李四",getDataCellFormat(CellType.STRING_FORMULA));   
                     sheet.addCell(label);  
                       
                     insertOneCellData(sheet,2,2,70.5,getDataCellFormat(CellType.NUMBER));  
                     insertOneCellData(sheet,3,2,90.523,getDataCellFormat(CellType.NUMBER));  
                     insertOneCellData(sheet,4,2,60.5,getDataCellFormat(CellType.NUMBER));  
           
                     insertFormula(sheet,5,2,"C3+D3+E3",getDataCellFormat(CellType.NUMBER_FORMULA));  
                       
                     //插入日期  
                     mergeCellsAndInsertData(sheet, 0, 3, 5, 3, new Date(), getDataCellFormat(CellType.DATE));  
                       
                     workbook.write();   
                     workbook.close();  
                 }catch(Exception e){  
                     e.printStackTrace();  
                 }  
             }  
               
             /** 
              * 初始化表格屬性 
              * @param sheet 
              */ 
             public void initialSheetSetting(WritableSheet sheet){  
                try{  
                     //sheet.getSettings().setProtected(true); //設(shè)置xls的保護(hù),單元格為只讀的  
                     sheet.getSettings().setDefaultColumnWidth(10); //設(shè)置列的默認(rèn)寬度  
                     //sheet.setRowView(2,false);//行高自動擴(kuò)展   
                     //setRowView(int row, int height);--行高   
                     //setColumnView(int  col,int width); --列寬  
                     sheet.setColumnView(0,20);//設(shè)置第一列寬度  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
             }  
               
             /** 
              * 插入公式 
              * @param sheet 
              * @param col 
              * @param row 
              * @param formula 
              * @param format 
              */ 
             public void insertFormula(WritableSheet sheet,Integer col,Integer row,String formula,WritableCellFormat format){  
                 try{  
                     Formula f = new Formula(col, row, formula, format);  
                     sheet.addCell(f);  
                 }catch(Exception e){  
                     e.printStackTrace();  
                 }  
             }  
               
             /** 
              * 插入一行數(shù)據(jù) 
              * @param sheet       工作表 
              * @param row         行號 
              * @param content     內(nèi)容 
              * @param format      風(fēng)格 
              */ 
             public void insertRowData(WritableSheet sheet,Integer row,String[] dataArr,WritableCellFormat format){  
                 try{  
                     Label label;  
                     for(int i=0;i<dataArr.length;i++){  
                         label = new Label(i,row,dataArr[i],format);  
                         sheet.addCell(label);  
                     }  
                 }catch(Exception e){  
                     e.printStackTrace();  
                 }  
             }  
               
             /** 
              * 插入單元格數(shù)據(jù) 
              * @param sheet 
              * @param col 
              * @param row 
              * @param data 
              */ 
             public void insertOneCellData(WritableSheet sheet,Integer col,Integer row,Object data,WritableCellFormat format){  
                 try{  
                     if(data instanceof Double){  
                         jxl.write.Number  labelNF = new jxl.write.Number(col,row,(Double)data,format);   
                         sheet.addCell(labelNF);   
                     }else if(data instanceof Boolean){  
                         jxl.write.Boolean labelB = new jxl.write.Boolean(col,row,(Boolean)data,format);   
                         sheet.addCell(labelB);   
                     }else if(data instanceof Date){  
                         jxl.write.DateTime labelDT = new jxl.write.DateTime(col,row,(Date)data,format);   
                         sheet.addCell(labelDT);   
                         setCellComments(labelDT, "這是個創(chuàng)建表的日期說明!");  
                     }else{  
                         Label label = new Label(col,row,data.toString(),format);  
                         sheet.addCell(label);                 
                     }  
                 }catch(Exception e){  
                     e.printStackTrace();  
                 }  
           
            }  
               
             /** 
              * 合并單元格,并插入數(shù)據(jù) 
              * @param sheet 
              * @param col_start 
              * @param row_start 
              * @param col_end 
              * @param row_end 
              * @param data 
              * @param format 
              */ 
             public void mergeCellsAndInsertData(WritableSheet sheet,Integer col_start,Integer row_start,Integer col_end,Integer row_end,Object data, WritableCellFormat format){  
                try{  
                    sheet.mergeCells(col_start,row_start,col_end,row_end);//左上角到右下角  
                    insertOneCellData(sheet, col_start, row_start, data, format);  
                }catch(Exception e){  
                    e.printStackTrace();  
                }  
           
             }  
               
             /** 
              * 給單元格加注釋 
              * @param label 
              * @param comments 
              */ 
             public void setCellComments(Object label,String comments){  
                 WritableCellFeatures cellFeatures = new WritableCellFeatures();  
                 cellFeatures.setComment(comments);  
                 if(label instanceof jxl.write.Number){  
                     jxl.write.Number num = (jxl.write.Number)label;  
                     num.setCellFeatures(cellFeatures);  
                 }else if(label instanceof jxl.write.Boolean){  
                     jxl.write.Boolean bool = (jxl.write.Boolean)label;  
                     bool.setCellFeatures(cellFeatures);  
                 }else if(label instanceof jxl.write.DateTime){  
                     jxl.write.DateTime dt = (jxl.write.DateTime)label;  
                     dt.setCellFeatures(cellFeatures);  
                 }else{  
                     Label _label = (Label)label;  
                     _label.setCellFeatures(cellFeatures);  
                 }  
             }  
               
             /** 
             * 讀取excel 
             * @param inputFile 
             * @param inputFileSheetIndex 
             * @throws Exception 
             */ 
             public ArrayList<String> readDataFromExcel(File inputFile, int inputFileSheetIndex){  
                ArrayList<String> list = new ArrayList<String>();  
                Workbook book = null;  
                Cell cell = null;  
                WorkbookSettings setting = new WorkbookSettings();   
                java.util.Locale locale = new java.util.Locale("zh","CN");   
                setting.setLocale(locale);  
                setting.setEncoding("ISO-8859-1");  
                try{  
                    book = Workbook.getWorkbook(inputFile, setting);  
                }catch(Exception e){  
                    e.printStackTrace();    
                }  
           
                Sheet sheet = book.getSheet(inputFileSheetIndex);  
                for (int rowIndex = 0; rowIndex < sheet.getRows(); rowIndex++) {//行  
                 for (int colIndex = 0; colIndex < sheet.getColumns(); colIndex++) {//列  
                     cell = sheet.getCell(colIndex, rowIndex);  
                     //System.out.println(cell.getContents());  
                     list.add(cell.getContents());  
                 }  
                }  
                book.close();  
           
                return list;  
             }  
           
             /** 
              * 得到數(shù)據(jù)表頭格式 
              * @return 
              */ 
             public WritableCellFormat getTitleCellFormat(){  
                 WritableCellFormat wcf = null;  
                 try {  
                     //字體樣式  
                     WritableFont wf = new WritableFont(WritableFont.TIMES,12, WritableFont.NO_BOLD,false);//最后一個為是否italic  
                     wf.setColour(Colour.RED);  
                     wcf = new WritableCellFormat(wf);  
                     //對齊方式  
                     wcf.setAlignment(Alignment.CENTRE);  
                     wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  
                     //邊框  
                     wcf.setBorder(Border.ALL,BorderLineStyle.THIN);  
                       
                     //背景色  
                     wcf.setBackground(Colour.GREY_25_PERCENT);  
                 } catch (WriteException e) {  
                  e.printStackTrace();  
                 }  
                 return wcf;  
             }  
               
             /** 
              * 得到數(shù)據(jù)格式 
              * @return 
              */ 
             public WritableCellFormat getDataCellFormat(CellType type){  
                 WritableCellFormat wcf = null;  
                 try {  
                     //字體樣式  
                     if(type == CellType.NUMBER || type == CellType.NUMBER_FORMULA){//數(shù)字  
                        NumberFormat nf = new NumberFormat("#.00");  
                        wcf = new WritableCellFormat(nf);   
                     }else if(type == CellType.DATE || type == CellType.DATE_FORMULA){//日期  
                         jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-MM-dd hh:mm:ss");   
                         wcf = new jxl.write.WritableCellFormat(df);   
                     }else{  
                         WritableFont wf = new WritableFont(WritableFont.TIMES,10, WritableFont.NO_BOLD,false);//最后一個為是否italic  
                         wcf = new WritableCellFormat(wf);  
                     }  
                     //對齊方式  
                     wcf.setAlignment(Alignment.CENTRE);  
                     wcf.setVerticalAlignment(VerticalAlignment.CENTRE);  
                     //邊框  
                     wcf.setBorder(Border.LEFT,BorderLineStyle.THIN);  
                     wcf.setBorder(Border.BOTTOM,BorderLineStyle.THIN);  
                     wcf.setBorder(Border.RIGHT,BorderLineStyle.THIN);  
                     //背景色  
                     wcf.setBackground(Colour.WHITE);  
                       
                     wcf.setWrap(true);//自動換行  
                       
                 } catch (WriteException e) {  
                  e.printStackTrace();  
                 }  
                 return wcf;  
             }  
               
             /** 
              * 打開文件看看 
              * @param exePath 
              * @param filePath 
              */ 
             public void openExcel(String exePath,String filePath){  
                 Runtime r=Runtime.getRuntime();   
                 String cmd[]={exePath,filePath};   
                 try{   
                     r.exec(cmd);   
                 }catch(Exception e){  
                     e.printStackTrace();  
                 }  
             }  
               
             public static void main(String[] args){  
                 String[] titles = {"學(xué)號","姓名","語文","數(shù)學(xué)","英語","總分"};   
                 JExcelUtils jxl = new JExcelUtils();  
                 String filePath = "E:/test.xls";  
                 jxl.createExcelFile(filePath,"成績單",titles);  
                 jxl.readDataFromExcel(new File(filePath),0);  
                 jxl.openExcel("C:/Program Files/Microsoft Office/OFFICE11/EXCEL.EXE",filePath);  
             }  


          評論

          # re: jxl操作excel例子(轉(zhuǎn))  回復(fù)  更多評論   

          2009-10-15 18:50 by dsf
          ding

          # re: jxl操作excel例子(轉(zhuǎn))[未登錄]  回復(fù)  更多評論   

          2010-04-10 19:03 by 123
          主站蜘蛛池模板: 韩城市| 西丰县| 化德县| 汉寿县| 扬中市| 临高县| 刚察县| 临朐县| 张家界市| 宜城市| 那坡县| 景洪市| 富平县| 梧州市| 衡南县| 平潭县| 肃北| 同仁县| 江都市| 崇信县| 盐源县| 开鲁县| 江口县| 郯城县| 手游| 东至县| 南江县| 新闻| 成武县| 怀集县| 元朗区| 阳泉市| 蒙城县| 烟台市| 咸丰县| 确山县| 嘉鱼县| 如皋市| 江西省| 南投市| 博白县|