眾所周知,EXCEL是微軟的office套件里的一個(gè)產(chǎn)品,使用比較廣泛,由于微軟產(chǎn)品的特殊性,JAVA標(biāo)準(zhǔn)
庫(kù)里面并沒(méi)有提供操作EXCEL文檔的類(lèi),可是在程序開(kāi)發(fā)過(guò)程中,如果能將數(shù)據(jù)輸出成一個(gè)電子表格的形式,
那將有利于用戶(hù)分析和查看數(shù)據(jù).
雖然標(biāo)準(zhǔn)類(lèi)庫(kù)沒(méi)有提供操作方法,但是得益于JAVA是開(kāi)源的,所以我們可以找到第三方的開(kāi)源的類(lèi)庫(kù)來(lái)
進(jìn)行EXCEL的讀寫(xiě)操作.我們選用apache的POI庫(kù)來(lái)進(jìn)行EXCEL的操作.
在POI里面,它把很多EXCEL里面的元素都對(duì)象化了,很符合的JAVA的編程風(fēng)格.
在使用POI之前,我們得下載一個(gè)POI的庫(kù),我們可以去apache的網(wǎng)站上去下載,目前最新的版本是3.0.1,
下載后,把它加入到 classpath中就可以使用它了.
下面我們就來(lái)看一下最簡(jiǎn)單的一個(gè)例子,生成我們第一個(gè)EXCEL文檔.
/*
* Test2.java
*
* Created on 2007年9月12日, 上午9:18
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package test1;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
/**
*
* @author hadeslee
*/
public class Test2{
/** Creates a new instance of Test2 */
public Test2() {
}
public static void main(String[] args)throws Exception {
//聲明一個(gè)工作薄
HSSFWorkbook wb=new HSSFWorkbook();
//生成一個(gè)表格
HSSFSheet sheet=wb.createSheet("表格1");
//生成一個(gè)列
HSSFRow row=sheet.createRow(0);
//生成一個(gè)樣式
HSSFCellStyle style=wb.createCellStyle();
//設(shè)置這些樣式
style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//生成一個(gè)字體
HSSFFont font=wb.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short)16);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//把字體應(yīng)用到當(dāng)前的樣式
style.setFont(font);
//填充單元格
for(short i=0;i<5;i++){
//聲明一個(gè)單元格
HSSFCell cell=row.createCell(i);
//設(shè)置單元格的字符值
cell.setCellValue(new HSSFRichTextString("第"+i+"列"));
//設(shè)置單元格的樣式
cell.setCellStyle(style);
}
FileOutputStream fout=new FileOutputStream("我的第一個(gè)EXCEL.xls");
//輸出到文件
wb.write(fout);
fout.close();
}
}
* Test2.java
*
* Created on 2007年9月12日, 上午9:18
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package test1;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
/**
*
* @author hadeslee
*/
public class Test2{
/** Creates a new instance of Test2 */
public Test2() {
}
public static void main(String[] args)throws Exception {
//聲明一個(gè)工作薄
HSSFWorkbook wb=new HSSFWorkbook();
//生成一個(gè)表格
HSSFSheet sheet=wb.createSheet("表格1");
//生成一個(gè)列
HSSFRow row=sheet.createRow(0);
//生成一個(gè)樣式
HSSFCellStyle style=wb.createCellStyle();
//設(shè)置這些樣式
style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//生成一個(gè)字體
HSSFFont font=wb.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short)16);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//把字體應(yīng)用到當(dāng)前的樣式
style.setFont(font);
//填充單元格
for(short i=0;i<5;i++){
//聲明一個(gè)單元格
HSSFCell cell=row.createCell(i);
//設(shè)置單元格的字符值
cell.setCellValue(new HSSFRichTextString("第"+i+"列"));
//設(shè)置單元格的樣式
cell.setCellStyle(style);
}
FileOutputStream fout=new FileOutputStream("我的第一個(gè)EXCEL.xls");
//輸出到文件
wb.write(fout);
fout.close();
}
}
這個(gè)例子比起別的入門(mén)例子,可能會(huì)復(fù)雜一些,因?yàn)槔锩鎽?yīng)用到了樣式和字體,但是這些對(duì)于我們美化EXCEL是
很重要的,EXCEL里面大部份都是插入字符串,但是我們也可以插入圖片或者圖形或者格式化的日期以及時(shí)
間,至于如何插入這些,我們下次再講.:)
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.