注意:
如果是Maven工程,那需要在pom.xml文件中加入jxl
依赖,GAV坐标如下所示:
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
这只是一个参考version,当然可以使用其他的version
如果不是Maven工程,那需要加入相关的jar包依赖,相关地址是:
https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl
往Excel表中写数据:
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import java.io.File;
public class jxlWriteExcel {
public static void main(String[] args) {
// 获取文件
File file = new File("F:\\temp.xls");
try {
// 如果文件不存在,那就创建一个新的文件
if (!file.exists()) {
file.createNewFile();
}
// 创建可写入的Excel工作薄
WritableWorkbook workbook = Workbook.createWorkbook(file);
// 创建工作表,然后createSheet()方法中的两个参数分别是工作表名称和工作表在工作薄中的位置
WritableSheet sheet = workbook.createSheet("sheet0", 0);
// 创建单元格对象
Label label = null;
String[] title = {"id", "name", "age", "sex"};
// 通过上面的数据,生成一行列名
for (int i = 0; i < title.length; i++) {
// 第一个参数:列;第二个参数:行;第三个参数:单元格内容
label = new Label(i, 0, title[i]);
// 把单元格添加到工作表中
sheet.addCell(label);
}
// 循环插入每一行的数据,由于第一行已经被列名用了,所以i从1开始
for (int i = 1; i <= 10; i++) {
// 向单元格中插入数据,由于需要是字符串,所以在i后面添加了一个""变成字符串
label = new Label(0, i, i + "");
// 把单元格添加到表中
sheet.addCell(label);
label = new Label(1, i, "张三" + i + "号");
sheet.addCell(label);
label = new Label(2, i, 21 + i + "");
sheet.addCell(label);
// 如果i是偶数,性别为男,如果i是奇数,性别为女
label = new Label(3, i, i % 2 == 0 ? "男" : "女");
sheet.addCell(label);
}
// 写入Exel工作表
workbook.write();
// 关闭Excel工作薄对象,释放读取数据表的过程中所占用的内存空间
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
从Excel表中读数据:
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import java.io.File;
public class jxlReadExcel {
public static void main(String[] args) {
try {
//创建workbook工作薄,里面可以有多个工作表
Workbook workbook = Workbook.getWorkbook(new File("f:\\temp.xls"));
//获取第一张Sheet工作表
Sheet sheet = workbook.getSheet(0);
// 遍历所有行
for (int i = 0; i < sheet.getRows(); i++) {
// 遍历每一行的所有列
for (int j = 0; j < sheet.getColumns(); j++) {
// get(j,i)其中j是列,i是行,该方法可以获得单元格
Cell cell = sheet.getCell(j, i);
// 通过cell.getContents()获取单元格中的内容,它可以将任何类型的Cell值都作为一个字符串返回
System.out.print(cell.getContents() + " ");
}
// 每一行后面加一个换行
System.out.println();
}
// 关闭workbook工作薄,释放读取数据表的过程中所占用的内存空间
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
id name age sex
1 张三1号 22 女
2 张三2号 23 男
3 张三3号 24 女
4 张三4号 25 男
5 张三5号 26 女
6 张三6号 27 男
7 张三7号 28 女
8 张三8号 29 男
9 张三9号 30 女