眾所周知,EXCEL是微軟的office套件里的一個產(chǎn)品,使用比較廣泛,由于微軟產(chǎn)品的特殊性,JAVA標準
庫里面并沒有提供操作EXCEL文檔的類,可是在程序開發(fā)過程中,如果能將數(shù)據(jù)輸出成一個電子表格的形式,
那將有利于用戶分析和查看數(shù)據(jù).
雖然標準類庫沒有提供操作方法,但是得益于JAVA是開源的,所以我們可以找到第三方的開源的類庫來
進行EXCEL的讀寫操作.我們選用apache的POI庫來進行EXCEL的操作.
在POI里面,它把很多EXCEL里面的元素都對象化了,很符合的JAVA的編程風格.
在使用POI之前,我們得下載一個POI的庫,我們可以去apache的網(wǎng)站上去下載,目前最新的版本是3.0.1,
下載后,把它加入到 classpath中就可以使用它了.
下面我們就來看一下最簡單的一個例子,生成我們第一個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 {
//聲明一個工作薄
HSSFWorkbook wb=new HSSFWorkbook();
//生成一個表格
HSSFSheet sheet=wb.createSheet("表格1");
//生成一個列
HSSFRow row=sheet.createRow(0);
//生成一個樣式
HSSFCellStyle style=wb.createCellStyle();
//設置這些樣式
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);
//生成一個字體
HSSFFont font=wb.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short)16);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//把字體應用到當前的樣式
style.setFont(font);
//填充單元格
for(short i=0;i<5;i++){
//聲明一個單元格
HSSFCell cell=row.createCell(i);
//設置單元格的字符值
cell.setCellValue(new HSSFRichTextString("第"+i+"列"));
//設置單元格的樣式
cell.setCellStyle(style);
}
FileOutputStream fout=new FileOutputStream("我的第一個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 {
//聲明一個工作薄
HSSFWorkbook wb=new HSSFWorkbook();
//生成一個表格
HSSFSheet sheet=wb.createSheet("表格1");
//生成一個列
HSSFRow row=sheet.createRow(0);
//生成一個樣式
HSSFCellStyle style=wb.createCellStyle();
//設置這些樣式
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);
//生成一個字體
HSSFFont font=wb.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short)16);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//把字體應用到當前的樣式
style.setFont(font);
//填充單元格
for(short i=0;i<5;i++){
//聲明一個單元格
HSSFCell cell=row.createCell(i);
//設置單元格的字符值
cell.setCellValue(new HSSFRichTextString("第"+i+"列"));
//設置單元格的樣式
cell.setCellStyle(style);
}
FileOutputStream fout=new FileOutputStream("我的第一個EXCEL.xls");
//輸出到文件
wb.write(fout);
fout.close();
}
}
這個例子比起別的入門例子,可能會復雜一些,因為里面應用到了樣式和字體,但是這些對于我們美化EXCEL是
很重要的,EXCEL里面大部份都是插入字符串,但是我們也可以插入圖片或者圖形或者格式化的日期以及時
間,至于如何插入這些,我們下次再講.:)
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.