Java 操作 Excel


  這次的任務是實現數據的導入/導出功能,就是用Java操作Excel,上網找了一下,就Java來說用Apache的POI庫的比較多,功能也相對比較強大。其他Excel開發庫: http://www.oschina.net/project/tag/258/excel-tools Apache POI 下載地址: http://poi.apache.org/download.html 

  廢話不多說,直接給幾個例子就了解怎么用了。

  Excel 2003 (xls后綴)

 1 import java.io.FileInputStream;
 2 
 3 import org.apache.poi.hssf.usermodel.HSSFRow;
 4 import org.apache.poi.hssf.usermodel.HSSFSheet;
 5 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 6 
 7 public class ReadExcel2003 {
 8     public static void main(String[] args) {
 9         try {
10             FileInputStream file = new FileInputStream("C:\\dd.xls");
11             
12             HSSFWorkbook workbook = new HSSFWorkbook(file);
13             HSSFSheet sheet = workbook.getSheetAt(0);
14             HSSFRow row = null;
15 
16             for(int i=0;sheet.getRow(i)!=null;i++){
17                 row = sheet.getRow(i);
18                 for(int j=0;row.getCell(j)!=null;j++){
19                     System.out.print(row.getCell(j)+"");
20                 }
21                 System.out.println();
22             }
23         } catch (Exception e) {
24             e.printStackTrace();
25         }
26     }
27 }

  Excel 2007 (xlsx后綴)

 1 import java.io.FileInputStream;
 2 
 3 import org.apache.poi.xssf.usermodel.XSSFRow;
 4 import org.apache.poi.xssf.usermodel.XSSFSheet;
 5 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 6 
 7 public class ReadExcel2007 {
 8     public static void main(String[] args) {
 9         try {
10             FileInputStream file = new FileInputStream("C:\\bb.xlsx");
11             XSSFWorkbook workbook  = new XSSFWorkbook(file);
12             XSSFSheet sheet = workbook.getSheetAt(0);
13             
14             XSSFRow row = null;
15             
16             for(int i=0;sheet.getRow(i)!=null;i++){
17                 row = sheet.getRow(i);
18                 for(int j=0;row.getCell(j)!=null;j++){
19                     System.out.print(row.getCell(j)+" ");
20                 }
21                 System.out.println();
22             }
23         } catch (Exception e) {
24             e.printStackTrace();
25         }
26     }
27 }

  Excel 2003 (xls 后綴)

 1 import java.io.FileOutputStream;
 2 
 3 import org.apache.poi.hssf.usermodel.HSSFCell;
 4 import org.apache.poi.hssf.usermodel.HSSFRow;
 5 import org.apache.poi.hssf.usermodel.HSSFSheet;
 6 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 7 
 8 public class WriteExcel2003 {
 9     public static void main(String[] args) {
10         try {
11             HSSFWorkbook workbook = new HSSFWorkbook();
12             HSSFSheet sheet = workbook.createSheet("test"); //頁簽
13             HSSFRow row = sheet.createRow(1);
14             HSSFCell cell = row.createCell(2);
15             cell.setCellValue("test");
16             for (int i=0;i<100;i++){
17                 row = sheet.createRow(i);
18                 for(int j=0;j<100;j++){
19                     cell = row.createCell(j);
20                     cell.setCellValue("("+i+","+j+")");
21                 }
22             }
23             FileOutputStream os = null;
24             os = new FileOutputStream("C:\\dd.xls");
25             workbook.write(os);
26             os.flush();
27             os.close();
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31         System.out.println("Ok");
32     }
33 }

  Excel 2007 (xlsx 后綴)

 1 import java.io.FileOutputStream;
 2 
 3 import org.apache.poi.xssf.usermodel.XSSFCell;
 4 import org.apache.poi.xssf.usermodel.XSSFRow;
 5 import org.apache.poi.xssf.usermodel.XSSFSheet;
 6 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 7 
 8 public class WriteExcel2007 {
 9     public static void main(String[] args) {
10         try {
11             XSSFWorkbook workbook = new XSSFWorkbook();
12             XSSFSheet sheet = workbook.createSheet("test"); //頁簽
13             XSSFRow row = sheet.createRow(1);
14             XSSFCell cell = row.createCell(2);
15             cell.setCellValue("test");
16             for (int i=0;i<100;i++){
17                 row = sheet.createRow(i);
18                 for(int j=0;j<100;j++){
19                     cell = row.createCell(j);
20                     cell.setCellValue("("+i+","+j+")");
21                 }
22             }
23             FileOutputStream os = null;
24             os = new FileOutputStream("C:\\dd.xlsx");
25             workbook.write(os);
26             os.flush();
27             os.close();
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31         System.out.println("Ok");
32     }
33 }

  這里要說一下Excel的xls和xlsx兩種后綴里面的數據存儲方式區別太大,所以導致編寫代碼的時候要使用兩個完全不同的庫。這個只要把后綴改成zip,然后看壓縮包里面有什么數據就大概知道為什么不一樣了。xlsx是使用xml來保存的,這種格式應該是比較好的描述數據吧,所以才會使用完成不一樣的格式來升級。

  從官網上下載POI包,里面有API,更多的操作可以查看API。

  下面介紹幾個常用的API

1             HSSFSheet sheet = workbook.createSheet("test"); //頁簽
2             HSSFRow row = sheet.createRow(1);
3             HSSFCell cell = row.createCell(1);
4             cell.setCellValue("test");
5             cell = row.createCell(3);
6             cell.setCellFormula("B2"); //使用公式
7             sheet.setColumnWidth(2, 300); //設置列寬
8             row.setHeight((short) 1000); //設置行高

  效果

  字體屬性

 1             HSSFRow row = sheet.createRow(1);
 2             HSSFCell cell = row.createCell(1);
 3             cell.setCellValue("TEST"); //設置文字
 4             HSSFFont font = workbook.createFont(); 
 5             font.setFontHeightInPoints((short)13); //設置字體大小
 6             font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //設置字體加粗
 7             font.setFontName("黑體"); //設置字體為黑體
 8             HSSFColor color=new HSSFColor.BLUE(); 
 9             font.setColor(color.getIndex()); //設置設置顏色
10             HSSFCellStyle style = workbook.createCellStyle();
11             style.setFont(font); //封裝成一個樣式
12             cell.setCellStyle(style); //設置樣式

  效果

  其實常用的也就是對文字的導入和導出功能,其他的樣式描述功能,沒有什么大的用處,實際用的比較少。

 

  參考資料:  http://my.oschina.net/zimingforever/blog/101142 

         http://www.cnblogs.com/hongten/archive/2012/02/22/java2poi.html

        http://my.oschina.net/baochanghong/blog/351592

  本文地址:  http://www.cnblogs.com/wunaozai/p/4179270.html


免責聲明!

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



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