這次的任務是實現數據的導入/導出功能,就是用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