Jxl读/写Excel实例(设置Cell Format格式)

来源:互联网 发布:手机淘宝店开店流程 编辑:程序博客网 时间:2024/06/01 07:57
本篇文章主要讲的是jxl 操作Excel的三个简单的实例,一个是读取Excel表格数据,一个是 写一个新的Excel表格,最后是更新现有的Excel表格。在开始全面学习 jxl 之前,我们先看几个例子,让大家大概整体的了解一下jxl 是怎么操作Excel表的,以使之后更有兴趣,更好地学习jxl。

        

        读Excel表格数据:

        

[java] view plain copy
  1. import java.io.File;  
  2. import java.io.IOException;  
  3. import jxl.Cell;  
  4. import jxl.Sheet;  
  5. import jxl.Workbook;  
  6. import jxl.read.biff.BiffException;  
  7.   
  8. /** 
  9.  * 
  10.  * @author yrs 
  11.  */  
  12. public class TRead {  
  13.       
  14.     public static void read (Workbook book) {  
  15.         int rows;  
  16.         //得到Excel中工作表数  
  17.         int sheetNumber = book.getNumberOfSheets();  
  18.         //得到每个表的名称  
  19.         String [] sheetNameList = book.getSheetNames();  
  20.         //得到每个工作表  
  21.         Sheet [] sheetList = book.getSheets();  
  22.           
  23.         //遍历每个单元格,得到单元格的内容,并输出。注意得到单元格的内容是以字符串形式返回的。  
  24.         for(int i = 0;i < sheetNumber;i++) {  
  25.             System.out.println("############## " + sheetNameList[i] + " ##############");  
  26.             //得到该工作表中数据的行数  
  27.             rows = sheetList[i].getRows();  
  28.             for(int j = 0;j < rows;j++) {  
  29.                 //得到每一行的单元格  
  30.                 Cell [] cellList = sheetList[i].getRow(j);  
  31.                 for (Cell cell : cellList) {  
  32.                     System.out.print(cell.getContents() + "  ");  
  33.                 }  
  34.                 System.out.println();  
  35.             }            
  36.         }        
  37.     }  
  38.     public static void main(String [] args) throws IOException, BiffException  {  
  39.         try {  
  40.             //文件D://JEtest//read.xls 要存在,并且含有数据。  
  41.             File file = new File("D://JEtest//read.xls");  
  42.             //得到工作簿  
  43.             Workbook book = Workbook.getWorkbook(file);   
  44.             TRead.read(book);  
  45.             book.close();              
  46.         }catch (IOException | BiffException e) {  
  47.             System.out.println("Exception:  " + e);  
  48.             throw e;  
  49.         }  
  50.     }    
  51. }  
      

        读Excel表格的步奏是:工作簿--》工作表--》单元格。 当然有时候对数据经行处理要知道数据的格式,这个要在取得单元格的时候对它进行数据类型的判断,然后再转化成相应的类型,从而得到原数据类型的值。关于数据类型会在之后的文章中介绍。

 

        生成一个新的Excel表格,并向里面写数据:


[java] view plain copy
  1. import java.io.File;  
  2. import java.io.IOException;  
  3. import jxl.Workbook;  
  4. import jxl.read.biff.BiffException;  
  5. import jxl.write.Label;  
  6. import jxl.write.Number;  
  7. import jxl.write.Boolean;  
  8. import jxl.write.DateFormat;  
  9. import jxl.write.DateTime;  
  10. import jxl.write.NumberFormat;  
  11. import jxl.write.WritableCellFormat;  
  12. import jxl.write.WritableFont;  
  13. import jxl.write.WritableSheet;  
  14. import jxl.write.WritableWorkbook;  
  15. import jxl.write.WriteException;  
  16.   
  17.   
  18. /** 
  19.  * 
  20.  * @author yrs 
  21.  */  
  22. public class TWrite {  
  23.       
  24.     public static void  write(WritableWorkbook wb) throws WriteException {  
  25.         WritableSheet wSheet = wb.createSheet("sheet1"0);  
  26.           
  27.         //添加Label对象   
  28.         Label labelC = new Label(00"Label cell");   
  29.         wSheet.addCell(labelC);  
  30.           
  31.         //添加Number对象   
  32.         Number numberC = new Number(013.1415926);   
  33.         wSheet.addCell(numberC);   
  34.           
  35.         // 3.添加Boolean对象   
  36.         Boolean booleanC = new Boolean(02true);   
  37.         wSheet.addCell(booleanC);   
  38.           
  39.         // 4.添加DateTime对象   
  40.         DateTime dateTimeC = new DateTime(03new java.util.Date());   
  41.         wSheet.addCell(dateTimeC);   
  42.           
  43.         // 添加带有字型Formatting的对象   
  44.         WritableFont wFont = new WritableFont(   
  45.             WritableFont.TIMES, 18, WritableFont.BOLD, true);   
  46.         WritableCellFormat wCellFormatC = new WritableCellFormat(wFont);   
  47.         Label labelCF = new Label(10"Label Cell", wCellFormatC);   
  48.         wSheet.addCell(labelCF);   
  49.           
  50.          // 添加带有formatting的Number对象   
  51.         NumberFormat nFormat = new NumberFormat("#.##");   
  52.         WritableCellFormat wCellFormatN = new WritableCellFormat(nFormat);  
  53.         Number numberNF = new Number(113.1415926, wCellFormatN);   
  54.         wSheet.addCell(numberNF);   
  55.           
  56.         // 添加带有formatting的DateFormat对象   
  57.         DateFormat dFormat = new DateFormat(   
  58.           "yyyy MM dd hh:mm:ss");   
  59.         WritableCellFormat wCellFormatD = new WritableCellFormat(dFormat);   
  60.         DateTime dateTimeDF = new DateTime(13new java.util.Date(), wCellFormatD);   
  61.         wSheet.addCell(dateTimeDF);  
  62.           
  63.     }  
  64.     public static void main(String [] args) throws IOException, BiffException, WriteException  {  
  65.         try {  
  66.               
  67.             //文件D://JEtest//read.xls 不存在,若存在数据将会丢失  
  68.             File file = new File("D://JEtest//write.xls");  
  69.             //创建一个新的可写工作簿  
  70.             WritableWorkbook wb = Workbook.createWorkbook(file);   
  71.             TWrite.write(wb);  
  72.               
  73.             // 写入Exel工作表   
  74.             wb.write();  
  75.             // 关闭Excel工作薄对象   
  76.             wb.close();              
  77.         }catch (IOException | WriteException e) {  
  78.             System.out.println("Exception:  " + e);  
  79.             throw e;  
  80.         }  
  81.     }    
  82. }  

        生成一个新的Excel表格,并向里面写入数据的顺序也是 工作簿 -- 工作表 -- 单元格。但是写入数据的顺序是反过来的,先向单元格中添加数据,然后添加到工作表上,最后写入工作簿中。这里需要注意的是,以 WritableWorkbook wb = Workbook.createWorkbook(file);  方式创建工作簿是创建了一个新的工作簿,如果file文件原来存在,那么它的数据将会失去,下一个例子将会讲解怎样更新一个Excel表格。 还有就是在工作簿关闭之前要把数据写入工作簿中,也就是 wb.write();。


        更新Excel表格数据:


[java] view plain copy
  1. import java.io.File;  
  2. import java.io.IOException;  
  3. import jxl.Workbook;  
  4. import jxl.read.biff.BiffException;  
  5. import jxl.write.Label;  
  6. import jxl.write.WritableSheet;  
  7. import jxl.write.WritableWorkbook;  
  8. import jxl.write.WriteException;  
  9.   
  10. /** 
  11.  * 
  12.  * @author yrs 
  13.  */  
  14. public class TUpdate {  
  15.       
  16.     public static void update (WritableWorkbook wb) throws WriteException {  
  17.         WritableSheet sheet = wb.createSheet("第二页"1);  
  18.         sheet.addCell(new Label(0,0,"第二页更新数据"));  
  19.           
  20.     }  
  21.       
  22.     public static void main(String [] args) throws IOException, BiffException, WriteException  {  
  23.         try {  
  24.             //文件D://JEtest//read.xls 要存在,并且含有数据。  
  25.             File file = new File("D://JEtest//update.xls");  
  26.             //得到工作簿  
  27.             Workbook book = Workbook.getWorkbook(file);   
  28.             //创建一个可写工作簿  
  29.             WritableWorkbook wb = Workbook.createWorkbook(file, book);  
  30.             TUpdate.update(wb);  
  31.             wb.write();  
  32.             wb.close();  
  33.             book.close();              
  34.         }catch (IOException | BiffException | WriteException e) {  
  35.             System.out.println("Exception:  " + e);  
  36.             throw e;  
  37.         }  
  38.     }    
  39. }  
原创粉丝点击