Java简单解析XLS文件的方法示例:读取和写入
1. 概述
XLS是一种Microsoft Excel电子表格文件格式,是常见的办公文档,需要在Java程序中对其进行处理和解析。本文将介绍Java中读取和写入XLS文件的方法,包括使用Apache POI库读取和写入XLS文件。
2. 使用Apache POI库读取XLS文件
Apache POI是一款用于处理Microsoft Office格式文件的Java库。使用Apache POI读取XLS文件的基本步骤如下:
2.1 引入依赖
在Maven项目中要使用Apache POI,需要在pom.xml中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2.2 创建Workbook对象
首先需要创建一个Workbook对象,表示整个XLS文件,可以根据文件扩展名来判断使用哪种Workbook类型。例如,使用HSSFWorkbook类表示.xls文件,XSSFWorkbook类表示.xlsx文件。
FileInputStream fis = new FileInputStream(new File("test.xls"));
Workbook workbook = new HSSFWorkbook(fis); // 读取xls文件
// Workbook workbook = new XSSFWorkbook(fis); // 读取xlsx文件
2.3 读取Sheet
Workbook对象包含若干个Sheet对象,每个Sheet表示一个工作表。可以使用getSheet()方法获取Sheet对象。也可以通过Sheet对象的名称或索引获取相应的Sheet对象。
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
// Sheet sheet = workbook.getSheet("Sheet1"); // 获取名称为"Sheet1"的Sheet
2.4 读取单元格数据
Sheet对象包含若干行和列,每个单元格表示一个交叉点。可以使用getRow()和getCell()方法获取相应的行和列。通过getCellType()方法可以判断单元格数据类型,例如字符串、数字、日期等。
Row row = sheet.getRow(0); // 获取第一行
Cell cell = row.getCell(0); // 获取第一个单元格
if (cell.getCellType() == CellType.STRING) {
String value = cell.getStringCellValue();
System.out.println(value);
} else if (cell.getCellType() == CellType.NUMERIC) {
double value = cell.getNumericCellValue();
System.out.println(value);
} else if (cell.getCellType() == CellType.BOOLEAN) {
boolean value = cell.getBooleanCellValue();
System.out.println(value);
}
3. 使用Apache POI库写入XLS文件
使用Apache POI写入XLS文件的基本步骤如下:
3.1 创建Workbook对象
同样需要创建一个Workbook对象,表示整个XLS文件。
Workbook workbook = new HSSFWorkbook(); // 创建xls文件
// Workbook workbook = new XSSFWorkbook(); // 创建xlsx文件
3.2 创建Sheet和Row对象
使用createSheet和createRow()方法创建Sheet和Row对象。
Sheet sheet = workbook.createSheet("Sheet1"); // 创建名称为"Sheet1"的Sheet
Row row = sheet.createRow(0); // 创建第一行
3.3 创建单元格并写入数据
使用createCell()方法创建单元格对象。通过setCellType()和setCellValue()方法设置数据类型和值。
Cell cell1 = row.createCell(0); // 创建第一个单元格
cell1.setCellType(CellType.STRING);
cell1.setCellValue("test");
// 或
Cell cell2 = row.createCell(1); // 创建第二个单元格
cell2.setCellValue(123.45);
3.4 保存文件
使用FileOutputStream和write()方法将Workbook对象写入到磁盘文件。
FileOutputStream fos = new FileOutputStream(new File("test.xls"));
workbook.write(fos);
fos.close();
4. 示例
4.1 读取XLS文件
test.xls文件内容如下:
A | B | C |
---|---|---|
1 | test1 | test2 |
2 | test3 | test4 |
Java代码如下:
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class ReadXlsFileExample {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(new File("test.xls"));
Workbook workbook = new HSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
for (Row row : sheet) {
for (Cell cell : row) {
if (cell.getCellType() == CellType.STRING) {
String value = cell.getStringCellValue();
System.out.print(value);
} else if (cell.getCellType() == CellType.NUMERIC) {
double value = cell.getNumericCellValue();
System.out.print(value);
}
System.out.print("\t"); // 每个单元格之间加一个制表符
}
System.out.println(); // 每行之间加一个换行符
}
fis.close();
}
}
输出结果:
A B C
1.0 test1 test2
2.0 test3 test4
4.2 写入XLS文件
Java代码如下:
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class WriteXlsFileExample {
public static void main(String[] args) throws Exception {
Workbook workbook = new HSSFWorkbook(); // 创建xls文件
Sheet sheet = workbook.createSheet("Sheet1"); // 创建名称为"Sheet1"的Sheet
Row row = sheet.createRow(0); // 创建第一行
Cell cell1 = row.createCell(0); // 创建第一个单元格
cell1.setCellType(CellType.STRING);
cell1.setCellValue("test1");
Cell cell2 = row.createCell(1); // 创建第二个单元格
cell2.setCellValue(123.45);
FileOutputStream fos = new FileOutputStream(new File("test.xls"));
workbook.write(fos);
fos.close();
}
}
生成的test.xls文件内容如下:
A | B |
---|---|
test1 | 123.45 |
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java简单解析xls文件的方法示例【读取和写入】 - Python技术站