JAVA操作Excel表格


一、JExcelApi 可以從文件或者輸入流進行讀取操作。

基本步驟:

  1.由文件或者輸入流創建一個workbook;

  2.由workbook的getSheet()方法創建一個工作表Sheet(兩種方法,下標和名字,下標從0開始);

  3.由Sheet的getCell(x,y)方法得到某個單元格,cell對象可以讀取它的類型(getType)、內容(getContents)等。

讀取excel表格內容的代碼如下:

 

 1 package com.test;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 import jxl.Cell;
 7 import jxl.Sheet;
 8 import jxl.Workbook;
 9 import jxl.read.biff.BiffException;
10 
11 
12 
13 public class ExcelRead {
14 
15     /**
16      * @param args
17      */
18     public static void main(String[] args) {
19         File f = new File("F:/shar/test/test.xls");
20         try {
21             Workbook book = Workbook.getWorkbook(f);//  
22             Sheet sheet = book.getSheet(0); // 獲得第一個工作表對象
23             for (int i = 0; i < sheet.getRows(); i++) {
24                 for (int j = 0; j < sheet.getColumns(); j++) {
25                     Cell cell = sheet.getCell(j, i); // 獲得單元格
26                     System.out.print(cell.getContents() + " ");
27                     //得到單元格的類型
28                     //System.out.println(cell.getType());
29                 }
30                 System.out.print("\n");
31             }
32         } catch (BiffException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         } catch (IOException e) {
36             // TODO Auto-generated catch block
37             e.printStackTrace();
38         }
39     }
40 
41 }

 

 

二、創建excel表格的基本步驟:

  1.創建一個WritableWorkbook對象(用Workbook的createWorkbook方法創建),要指定創建一個文件;

  2.創建一個工作表WritableSheet(用workbook對象的createSheet方法創建),注意要是WritableSheet,說明可以對其寫;

  3.創建單元格,再將單元格加入到sheet里;

  4.執行workbook的write()方法進行寫操作最后關閉workbook。

創建表格的具體代碼如下:

 1 package com.test;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 import jxl.Workbook;
 7 import jxl.write.Label;
 8 import jxl.write.Number;
 9 import jxl.write.WritableSheet;
10 import jxl.write.WritableWorkbook;
11 import jxl.write.WriteException;
12 import jxl.write.biff.RowsExceededException;
13 
14 public class ExcelWrite {
15 
16     /**
17      * @param args
18      * @throws IOException 
19      * @throws WriteException 
20      * @throws RowsExceededException 
21      */
22     public static void main(String[] args) throws IOException, RowsExceededException, WriteException {
23         // TODO Auto-generated method stub
24         WritableWorkbook workbook = Workbook.createWorkbook(new File("F:/shar/test/write1.xls"));
25         //生成第一頁的工作表,參數為0說明是第一頁
26         WritableSheet sheet = workbook.createSheet("第一頁", 0);
27         //指明單元格的位置是第一行第一列,第一個參數為列
28         Label type = new Label(0,0,"通話類型");
29         Label poneNo = new Label(1,0,"對方號碼");
30         Label addr = new Label(2,0,"通話地");
31         Label time = new Label(3,0,"通話時長");
32         //將單元格加到工作表中
33         sheet.addCell(type);
34         sheet.addCell(poneNo);
35         sheet.addCell(addr);
36         sheet.addCell(time);
37         //數字類型
38         //jxl.write.Number number = new jxl.write.Number(0,1,789.123);
39         Label type1 = new Label(0,1,"主叫");
40         Label poneNo1 = new Label(1,1,"18711370881");
41         Label addr1 = new Label(2,1,"湖南株洲");
42         Label time1 = new Label(3,1,"25");
43         sheet.addCell(type1);
44         sheet.addCell(poneNo1);
45         sheet.addCell(addr1);
46         sheet.addCell(time1);
47         workbook.write();
48         workbook.close();
49     }
50 
51 }

 

三、對原有的excel文件進行修改

基本步驟:

  1.獲得要修改的文件;

  2.為要修改的文件創建一個副本;

  3.對副本進行操作;

  4.講副本寫到原有的文件中。

具體代碼如下:

 1 package com.test;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 import jxl.Workbook;
 7 import jxl.read.biff.BiffException;
 8 import jxl.write.Label;
 9 import jxl.write.WritableSheet;
10 import jxl.write.WritableWorkbook;
11 import jxl.write.WriteException;
12 import jxl.write.biff.RowsExceededException;
13 
14 public class ExcelUpdate {
15 
16     /**
17      * @param args
18      * @throws IOException 
19      * @throws BiffException 
20      * @throws WriteException 
21      * @throws RowsExceededException 
22      */
23     public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException {
24         // TODO Auto-generated method stub
25         //獲得文件
26         Workbook wb = Workbook.getWorkbook(new File("F:/shar/test/write.xls"));
27         //打開文件的一個副本,並且指定數據寫回到原文件
28         WritableWorkbook workbook = Workbook.createWorkbook(new File("F:/shar/test/write.xls"),wb);
29         //添加一個工作表
30         WritableSheet sheet = workbook.createSheet("第二頁", 1);
31         //添加一個單元格
32         Label label = new Label(0,0,"第二頁測試數據");
33         sheet.addCell(label);
34         workbook.write();
35         workbook.close();
36     }
37 
38 }

 

另可以設置單元格的字體以及對齊方式,代碼如下:

 1 package com.test;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 import jxl.Workbook;
 7 import jxl.format.Alignment;
 8 import jxl.format.VerticalAlignment;
 9 import jxl.write.Label;
10 import jxl.write.Number;
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 import jxl.write.biff.RowsExceededException;
17 
18 public class FontFormat {
19 
20     /**
21      * @param args
22      * @throws IOException 
23      * @throws WriteException 
24      * @throws RowsExceededException 
25      */
26     public static void main(String[] args) throws IOException, RowsExceededException, WriteException {
27         // TODO Auto-generated method stub
28         WritableWorkbook workbook = Workbook.createWorkbook(new File("F:/shar/test/font.xls"));
29         //生成第一頁的工作表,參數為0說明是第一頁
30         WritableSheet sheet = workbook.createSheet("第一頁", 0);
31         
32         //設置字體格式(字體為TIMES,大小為16磅,加粗)
33         WritableFont font = new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);
34         WritableCellFormat format = new WritableCellFormat(font);
35         //設置數據的對齊方式
36         //水平居中
37         format.setAlignment(Alignment.CENTRE);
38         //垂直居中
39         format.setVerticalAlignment(VerticalAlignment.CENTRE);
40         //設置自動還行
41         format.setWrap(true);
42         
43         //指明單元格的位置是第一行第一列,第一個參數為列
44         Label type = new Label(0,0,"通話類型",format);
45         //將單元格加到工作表中
46         sheet.addCell(type);
47         //數字類型
48         //jxl.write.Number number = new jxl.write.Number(0,1,789.123);
49         Label type1 = new Label(0,1,"主叫");
50         sheet.addCell(type1);
51         workbook.write();
52         workbook.close();
53     }
54 
55 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM