Java- HSSFWorkbook && XSSFWorkbook

XSSFWorkbook:?
异常: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
是因为包没有加全…蓝色的是没添加导致报错的jar.
在这里插入图片描述

在给文档添加内容 时:

明明已经 rowline.createCell(value, CellType.STRING).setCellValue(“yayayay”);了但是文档没有修改.是因为:
没有进行保存.
使用: workbook.write();
代码:

File excel = new File(excelPath);
FileInputStream fis = new FileInputStream(excel); // 文件流对象
		Workbook wb = new HSSFWorkbook(excelPath);//xls文件
		Workbook wb = new XSSFWorkbook(excelPath);//xlsx文件
FileOutputStream os = new FileOutputStream(excelPath);
		wb.write(os);
		os.flush();
		os.close();

保存时 出现问题:
在这里插入图片描述
原因: wb占用流.导致文件变为空白.
修改:

		Workbook wb = new HSSFWorkbook(fis);//xls文件
		Workbook wb = new XSSFWorkbook(fis);//xlsx文件

解决?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,HSSFWorkbookXSSFWorkbook都是Apache POI库中的Excel文档对象模型(DOM)的实现类,分别用于处理旧版的Excel(.xls)和新版的Excel(.xlsx)文件。 由于HSSFWorkbookXSSFWorkbook是不同的类,它们之间没有继承或实现关系,所以不能直接进行强制类型转换。如果要将HSSFWorkbook对象转换为XSSFWorkbook对象,需要通过取旧版Excel文件并创建对应的新版Excel文件来实现。 下面是一种可行的方式: 1. 使用HSSFWorkbook打开旧版Excel文件: ```java try (InputStream inputStream = new FileInputStream("oldFile.xls")) { HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream); // 在这里进行HSSFWorkbook对象的操作 } catch (IOException e) { e.printStackTrace(); } ``` 2. 创建一个新的XSSFWorkbook对象并将HSSFWorkbook对象的内容复制到新建的文档中: ```java XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); for (int i = 0; i < hssfWorkbook.getNumberOfSheets(); i++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(i); XSSFSheet xssfSheet = xssfWorkbook.createSheet(hssfSheet.getSheetName()); for (Row hssfRow : hssfSheet) { XSSFRow xssfRow = xssfSheet.createRow(hssfRow.getRowNum()); for (Cell hssfCell : hssfRow) { XSSFCell xssfCell = xssfRow.createCell(hssfCell.getColumnIndex()); switch (hssfCell.getCellType()) { case STRING: xssfCell.setCellValue(hssfCell.getStringCellValue()); break; case NUMERIC: xssfCell.setCellValue(hssfCell.getNumericCellValue()); break; // 其他数据类型的处理 } } } } // 在这里进行XSSFWorkbook对象的操作 ``` 值得注意的是,由于HSSFWorkbookXSSFWorkbook是针对不同版本的Excel文件的,因此在进行复制的过程中,需要注意适配不同版本的特性和限制。例如,旧版的Excel文件最大行数为65536,而新版的Excel文件最大行数为1048576,因此在复制内容时需要避免超出限制。 相关问题: 1. 如何判断一个Excel文件是旧版的(.xls)还是新版的(.xlsx)? 2. 除了Apache POI库,还有其他Java库可以处理Excel文件吗? 3. 如果要在Excel文件中插入图表,有什么方法可以实现?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值