一、jxl了解
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且 仅仅识别PNG格式。
二、jxl.jar获取
1、jxl.jar:这里进行下载
下载jar包后放入classpath即可
2、通过maven进行管理的要在pom.xml中引入依赖
<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
三、jxl进行Excel的操作
package com.jxl.excel;
import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* Excel表格操作
*
* @author Administrator
*
*/
public class Utils {
public static void main(String[] args) {
// createXLS();
readXLS();
}
// 创建表格
public static void createXLS() {
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet("first page", 0);
// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)单元格内容为test
Label label = new Label(0, 0, "test");
// 将定义好的单元格添加到工作表中
sheet.addCell(label);
// 生成一个保存数字的单元格,
Number number = new Number(1, 0, 789);
sheet.addCell(number);
// 写入数据并关闭文件
book.write();
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 读取Excel
public static void readXLS() {
try {
Workbook book = Workbook.getWorkbook(new File("test.xls"));
Sheet sheet = book.getSheet(0);
Cell cell = sheet.getCell(0, 0);
String result = cell.getContents();
System.out.println(result);
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 修改Excel的类,添加一个工作表
public static void updateXLS() {
try {
Workbook wb = Workbook.getWorkbook(new File("test.xls"));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"), wb);
// 添加一个工作表
WritableSheet sheet = book.createSheet("第二页", 1);
sheet.addCell(new Label(0, 0, "第二页的测试数据"));
book.write();
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 操作图片
public static void addImage() throws Exception {
WritableWorkbook wwb = Workbook.createWorkbook(new File("test.xls"));
WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
File file = new File("test.png");
WritableImage image = new WritableImage(1, 4, 6, 18, file);
ws.addImage(image);
wwb.write();
wwb.close();
}
// 单元格合并
public static void mergeSheet(WritableWorkbook book, int sheetIndex, int x, int y, int x1, int y1) {
WritableSheet sheet = book.getSheet(sheetIndex);
try {
sheet.mergeCells(x, y, x1, y1);
// 合并第x列第x行到第x1列第y1行的所有单元格
} catch (Exception e) {
e.printStackTrace();
}
}
// 列宽行高设置
public static void setColView(WritableSheet sheet, int colIndex, int rowIndex, int colW, int rowH) {
try {
// 将第colIndex列的宽度设为colW
sheet.setColumnView(colIndex, colW);
// 将第rowIndex行的高度设为rowH
sheet.setRowView(rowIndex, rowH);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setFont() {
WritableWorkbook book;
try {
book = Workbook.createWorkbook(new File("test.xls"));
WritableFont font1 = new WritableFont(WritableFont.TIMES, 16, WritableFont.BOLD);// 字体为TIMES,字号16,加粗显示
WritableCellFormat format1 = new WritableCellFormat(font1);
// 使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述
Label label = new Label(0, 0, "data 4 test", format1);
// 使用了Label类的构造子,指定了字串被赋予那种格式
// 把水平对齐方式指定为居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
// 把垂直对齐方式指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
// 设置自动换行
format1.setWrap(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}