1、讀取操作支援的Excel版本包括95、97、2000、XP和2003
2、公式的讀取和編寫(支援97及以後版本)
3、支援字型、數字和日期的格式化
4、圖形複制
5、支援單元格的陰影、邊框和顔色的設定
6、國際化
7、支援圖檔的插入和複制
……
上面的列舉的隻是一部分功能,更多的介紹可以參考其首頁上的說明。
下面通過一個示例介紹讀、寫和合并單元格的基本操作:
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelHandler ...{
private OutputStream reportOS;
//表頭的字型格式,字型、大小和樣式
private final static WritableFont HEADER_FONT_STYLE = new WritableFont(
WritableFont.TIMES, 12, WritableFont.BOLD);
//内容的字型格式
private final static WritableCellFormat BODY_FONT_STYLE = new WritableCellFormat(
new WritableFont(WritableFont.TIMES,
WritableFont.DEFAULT_POINT_SIZE));
public ExcelHandler(String filePath) ...{
try ...{
File file = new File(filePath);
if (!file.exists()) ...{
file.createNewFile();
}
this.reportOS = new FileOutputStream(filePath);
} catch (Exception e) ...{
}
}
public void getExcelReport() ...{
//建立WorkBook
WritableWorkbook workBook = Workbook.createWorkbook(this.reportOS);
//建立Sheet(工作表)
WritableSheet sheet = workBook.createSheet("report", 0);
// 寫表頭
writeReportHeader(sheet);
// 寫内容
writeReportBody(sheet);
//寫入内容
workBook.write();
//關閉
workBook.close();
reportOS.close();
e.printStackTrace();
private void writeReportHeader(WritableSheet sheet) ...{
//建立表頭的單元格格式
WritableCellFormat headerFormat = new WritableCellFormat(
HEADER_FONT_STYLE);
//水準居中對齊
headerFormat.setAlignment(Alignment.CENTRE);
//豎直方向居中對齊
headerFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
//建立标簽,參數依次為:列索引、行索引、内容、格式
Label seqLabel = new Label(0, 0, "序号", headerFormat);
//增加單元格
sheet.addCell(seqLabel);
//合并單元格,參數依次為:列索引、行索引、列索引+需要合并的列的個數、行索引+需要合并的行的個數
sheet.mergeCells(0, 0, 0, 1);
//設定單元格寬度,以字元為機關
sheet.setColumnView(0, "序号".length() + 10);
Label basicInfoLabel = new Label(1, 0, "基本資訊", headerFormat);
sheet.addCell(basicInfoLabel);
sheet.mergeCells(1, 0, 3, 0);
Label nameLabel = new Label(1, 1, "姓名", headerFormat);
sheet.addCell(nameLabel);
sheet.setColumnView(0, "姓名".length() + 10);
Label ageLabel = new Label(2, 1, "年齡", headerFormat);
sheet.addCell(ageLabel);
sheet.setColumnView(0, "年齡".length() + 10);
Label heightLabel = new Label(3, 1, "身高", headerFormat);
sheet.addCell(heightLabel);
sheet.setColumnView(0, "身高".length() + 10);
private void writeReportBody(WritableSheet sheet) ...{
//單元格内容位數字
Number seq = new Number(0, 2, Double
.parseDouble("0"));
sheet.addCell(seq);
Label label = new Label(1, 2, "張三", BODY_FONT_STYLE);
sheet.addCell(label);
Number age = new Number(2, 2, Double
.parseDouble("18"));
sheet.addCell(age);
Number height = new Number(3, 2, Double
.parseDouble("183"));
sheet.addCell(height);
public static void main(String[] args) ...{
ExcelHandler handler = new ExcelHandler("c:/test.xls");
handler.getExcelReport();
}
下面是運作結果: