只要有表格,就会有Microsoft Excel,用Microsoft Excel处理数据已经成为不少人的习惯,尤其是在数据录入或
批量数据录入的时候,要经常用到Excel。Jakarta POI API就为Java程序员提供了一条存取Microsoft文档格式的
神奇之路,其中最成熟的就是能存取Microsoft Excel文档的HSSF API。
本篇文章就举例示范如何利用Java创建和读取Excel文档,并设置单元格的字体和格式。个人整理了下找到
的资料,并对某些淘汰的API做了修改。
为了保证示例程序的运行,必须安装Java 2 sdk1.4.0以上版本和Jakarta POI,Jakarta POI的web站点是:
http://jakarta./poi/。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package excel;
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
/**
*
* @author wj
*/
public class ReadAndWriteExcel {
//要保存或创建的文件,取当前目录
public static String outputFile = "e://testWrite.xls"; //要读取的Excel文件的位置,取当前目录
public static String inputFile = "e://testRead.xls";
public void readExcelFile(String sourceFile) {
try {
//创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
//创建对工作表的引用
//本例是按索引
//用getSheetAt(int index)按索引引用
//在Excel文档中,第一张工作表的缺省索引是0
//其语句为:HSSFSheet sheet=workbook.getSheetAt(0);
HSSFSheet sheet = workbook.getSheetAt(0);
//读取左上单元
if (sheet != null) {
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell(0);
//输出单元内容,cell.getRichStringCellValue()就是读取所在单元的值
System.out.println("A1是:" + cell.getRichStringCellValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void writeExcelFile(String sourceFile) {
//创建新的Excel工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//在Excel工作簿中建一工作簿,其名为缺省值
//如要新建一名为“效益指标”的工作表,其语句为:
//HSSFSheet sheet=workbook.createSheet("效益指标");
HSSFSheet sheet = workbook.createSheet();
//在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow(0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell(0);
//定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//在单元格中输入一些内容
HSSFRichTextString textString = new HSSFRichTextString("增加值");
cell.setCellValue(textString);
//新建一输出文件流
try {
FileOutputStream fOut = new FileOutputStream(outputFile);
//把相应的工作簿存盘
workbook.write(fOut);
fOut.flush();
//操作结束,关闭文件
fOut.close();
System.out.println("保存:文件生成成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("文件生成失败...");
}
}
public static void main(String[] args) {
Long startTime = System.currentTimeMillis();
System.out.println("Start Time:" + startTime);
ReadAndWriteExcel rwe = new ReadAndWriteExcel();
rwe.readExcelFile(inputFile);
rwe.writeExcelFile(outputFile);
Long endTime = System.currentTimeMillis();
System.out.println("End Time:" + endTime);
System.out.println("共用时间:" + (endTime - startTime));
System.exit(0);
}
}
设置单元格格式
在这里,我们将只介绍一些和格式设置有关的语句,我们假定Workbook就是对一个工作簿的应用。在Java
中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
1.创建字体,设置其为红色、粗体:
HSSFFont font=workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
2.创建格式
HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setFont(font);
3.应用格式
HSSFCell cell=row.createCell(0);
cell.setCellStyle(cellstyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
HSSFRichTextString textString = new HSSFRichTextString("增加值");
cell.setCellValue(textString);
总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API,
我们就可以轻易的再程序中存取Excel文档。