【Java处理Excel文件】使用poi的WorkbookFactory.create时报错XmlValueOutOfRangeException

最近在学习使用Java处理Excel文件,有如下代码:

// 读取文件,创建工作簿
        File f = new File(filePath);
        Workbook wb = WorkbookFactory.create(f);

结果在该处报错:

 Exception in thread "main" org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: Invalid hexBinary value: not encoded properly

上网查询XmlValueOutOfRangeException查不到有用信息。然后发现这段代码读取其它Excel都没问题,就这一个会报错。
打开这个Excel再仔细看了一遍,发现下面有个“已开启权限保护,编辑受限”。
把里面的内容复制到一个新Excel中,使用新Excel再跑程序时就不报错了。

### 回答1: WorkbookFactory.create是Apache POI中的方法,用于创建Excel工作簿对象,用法示例: ``` FileInputStream input = new FileInputStream("文件路径"); Workbook workbook = WorkbookFactory.create(input); ``` 其中,文件路径为待打开的Excel文件路径,创建工作簿对象后,可以通过其它API对Excel文件进行读写操作。 ### 回答2: WorkbookFactory.create是Apache POI库中的一个方法,用于创建操作Excel工作簿对象。下面是如何使用WorkbookFactory.create方法的步骤: 1. 导入必需的库文件:首先,确保已经在项目中导入了Apache POI库的相关jar文件。 2. 创建文件对象:使用Java的File类创建一个File对象,该对象表示要读取的Excel文件的路径。 3. 使用WorkbookFactory.create方法:通过调用WorkbookFactory类的create方法来创建工作簿对象。这个方法会根据文件的类型自动创建适当的工作簿对象。例如,如果文件是xlsx格式的,则创建XSSFWorkbook对象;如果文件是xls格式的,则创建HSSFWorkbook对象。 下面是一个简单的示例代码,展示了如何使用WorkbookFactory.create方法来创建Excel工作簿对象: ```java import org.apache.poi.ss.usermodel.*; import java.io.File; import java.io.FileInputStream; public class ExcelReader { public static void main(String[] args) { try { // 指定文件路径 String filePath = "C:/path/to/your/excel/file.xlsx"; // 创建文件对象 File file = new File(filePath); // 创建输入流 FileInputStream fis = new FileInputStream(file); // 使用WorkbookFactory.create方法创建工作簿对象 Workbook workbook = WorkbookFactory.create(fis); // 操作工作簿对象... // 关闭输入流 fis.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码首先指定Excel文件的路径,然后创建File对象表示要读取的文件。接下来,使用FileInputStream类创建一个输入流,将File对象作为参数传递给它。最后,调用WorkbookFactory.create方法创建工作簿对象。读取工作簿对象后,就可以对其进行操作,如读取、写入或修改Excel文件中的数据。在结束操作后,记得关闭输入流以释放资源。 这就是如何使用WorkbookFactory.create方法创建Excel工作簿对象的简单示例。根据实际需求和具体场景,可能需要进行更多的操作和异常处理。 ### 回答3: WorkbookFactory.create是Apache POI库中的一个方法,用于创建Workbook对象,以读取或写入Excel文件使用WorkbookFactory.create方法可以根据文件的类型(xls或xlsx)创建相应的Workbook对象。以下是使用WorkbookFactory.create方法的一般步骤: 1. 导入相关的库和类: ``` import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; ``` 2. 指定要读取的Excel文件的路径或InputStream: ``` String filePath = "C:/path/to/excel.xls"; InputStream inputStream = new FileInputStream(filePath); ``` 3. 使用WorkbookFactory.create方法创建Workbook对象: ``` Workbook workbook = WorkbookFactory.create(inputStream); ``` 这个方法会根据文件的类型自动选择使用HSSFWorkbook(对应.xls文件)或XSSFWorkbook(对应.xlsx文件)来创建Workbook对象,并将Excel文件的内容加载到新创建的Workbook对象中。 4. 读取或写入Excel文件中的数据: ``` // 读取操作示例 Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = row.getCell(0); String cellValue = cell.getStringCellValue(); // 写入操作示例 Sheet sheet = workbook.createSheet("Sheet1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("Hello, World!"); ``` 最后,记得关闭InputStream和保存Workbook对象(如果需要写入操作): ``` inputStream.close(); // 如果需要写入操作,要保存Workbook对象到文件 String outputFilePath = "C:/path/to/output/excel.xls"; FileOutputStream outputStream = new FileOutputStream(outputFilePath); workbook.write(outputStream); outputStream.close(); ``` 以上就是使用WorkbookFactory.create方法的基本步骤和示例。注意,在使用前要确保已经正确导入并配置了Apache POI库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值