excel是电子表格,在我们日常应用中用途非常广泛,但是当我们拿到一个数据量非常大的表格,我们要将其中的数据按照自己的格式进行拆开和组合时,需要耗费的时间就很多,而且若有很多这种类似的表格出现时,我们对其一一进行分解会变的极为耗时,这时我们就需要对excel进行编程处理。
java有一个包jxl针对excel进行字体、数字、日期操作、修饰单元格属性、支持图像和图表。
这样通过编程,我们就可以用java对excel进行操作,从而可以大批量地生成excel文件,减少我们的工作量。
首先我们要导入jxl包,下载jxl包(附录中给出),将其放在你的Java\jdk1.7.0_25\jre\lib\ext目录下,同时在你所要用它的java项目中右键,选择Build Path-Add External Archives,选择你要导入的包jxl.jar。这样我们会在java project下看到多了一个文件夹名为Referenced Libraries,其下便有你导入的包。包导入成功后,我们就开始去查找API(附录中给出),知道它的运用方法。
我们今天便来介绍一下excel的简单读取和写入。
// 首先我们来学习excel的写入
// 首先创建一个可写入的excel文件
WritableWorkbook wwb = Workbook.createWorkbook(new File(
"src/excel/test.xls"));
// 创建一个工作表,名为test,在第一个位置
WritableSheet sheet = wwb.createSheet("test", 0);
// 合并单元格,位置从0,0到6,0
sheet.mergeCells(0, 0, 6, 0);
// 设置工作表中第0列的宽度(单位不详)
sheet.setColumnView(0, 30);
// 设置工作表中第0行的高度(单位不详)
sheet.setRowView(0, 500);
// 设置横向打印
sheet.setPageSetup(PageOrientation.LANDSCAPE, PaperSize.A4, 0.5d, 0.5d);
// 设置缩放比例为90%
sheet.getSettings().setScaleFactor(90);
// 创建一个自定义字体格式,字体为宋体,字号为20,线条为加粗,有单下划线,红色字体
WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 12,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.RED);
// 创建一个自定义单元格式,运用上述字体
WritableCellFormat wcf = new WritableCellFormat(wf);
// 设置单元格式左右居中
wcf.setAlignment(Alignment.CENTRE);
// 设置单元格式垂直居中
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
// 设置单元格周围有边框
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);
// 创建一个文本标签,前两项为其坐标,第三项为其内容,最后为其单元格式
Label la = new Label(0, 0, "第一个例子", wcf);
// 将这个标签添加到工作表中
sheet.addCell(la);
// 下面我们来写入数字标签,首先我们自定义一个数字格式
// 我们这里保存的是两位小数点的数字格式,具体的可以进入excel,右键单元格-设置单元格格式-自定义中去查找
NumberFormat nf = new NumberFormat("#,##0.00");
// 和标签一样我们来创建一个自定义单元格式
WritableCellFormat nwcf = new WritableCellFormat(nf);
// 设置单元格式
nwcf.setAlignment(Alignment.RIGHT);
nwcf.setVerticalAlignment(VerticalAlignment.CENTRE);
// 创建一个数字标签,注意这里调用Number类时必须要用全程
jxl.write.Number num = new jxl.write.Number(0, 1, 123, nwcf);
// 将这个标签添加到工作表中
sheet.addCell(num);
// 将excel文件写入
wwb.write();
// 关闭excel文件输入(不关闭无法形成xls文件!)
wwb.close();
生成文件如图:
// 下面我们来学习excel的读取,相对与写入较为简单
// 首先创建一个文件对象
Workbook wb = Workbook.getWorkbook(new File("src/excel/test.xls"));
// 创建工作表对象
Sheet sheet = wb.getSheet(0);
// 读取第一个单元格的内容,并打印出来
System.out.println(sheet.getCell(0, 0).getContents());
// 我们也可以读取工作表数组
Sheet[] sheets = wb.getSheets();
// 打印每一个工作表的第一个单元格内容
for (Sheet sh : sheets) {
System.out.println(sh.getCell(0, 0).getContents());
}
// 关闭文件读入
wb.close();