hssfworkbook 转 xssfworkbook
时间: 2023-09-01 07:11:12 浏览: 226
HSSFWorkbook和XSSFWorkbook是Apache POI库中表示Excel文件的两个不同实现,前者用于处理.xls文件,后者用于处理.xlsx文件。如果需要将HSSFWorkbook转换为XSSFWorkbook,需要分别读取旧Excel文件并将其写入新Excel文件。以下是一个示例代码:
```java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class HSSFtoXSSF {
public static void main(String[] args) throws IOException {
// 读取旧的Excel文件
FileInputStream fis = new FileInputStream("oldExcel.xls");
Workbook wb = new HSSFWorkbook(fis);
// 创建新的Excel文件
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
// 将旧Excel文件的内容复制到新的Excel文件
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
xssfWorkbook.createSheet(wb.getSheetName(i));
for (int j = 0; j < wb.getSheetAt(i).getPhysicalNumberOfRows(); j++) {
xssfWorkbook.getSheetAt(i).createRow(j);
for (int k = 0; k < wb.getSheetAt(i).getRow(j).getPhysicalNumberOfCells(); k++) {
xssfWorkbook.getSheetAt(i).getRow(j).createCell(k)
.setCellValue(wb.getSheetAt(i).getRow(j).getCell(k).toString());
}
}
}
// 将新的Excel文件写出到磁盘
FileOutputStream fos = new FileOutputStream("newExcel.xlsx");
xssfWorkbook.write(fos);
fos.close();
}
}
```
需要注意的是,HSSFWorkbook和XSSFWorkbook之间存在一些差异,例如前者不支持超过65536行的Excel文件。因此,转换过程中可能需要进行一些额外的处理。
阅读全文