未报告的异常。必须被抓住或宣布被抛出

Unreported Exception. Must be caught or declared to be thrown

所以我正在尝试学习 Apache 的 POI API,但我在理解某些东西时遇到了一些困难。我正在尝试使用 JFileChooser class 打开现有的 Excel 文件,以便用户 select 访问 Excel 文件,然后我将以某种方式修改它.我在打开文件时遇到问题。它一直给我这个错误:未报告的异常。必须在具有 XSSFWorkbook 代码的行捕获或声明抛出。我的逻辑是这样的:

1) 让用户 select 使用 JFileChooser Class

要修改的 excel 文件

2) 创建一个新工作簿并sheet 传输所选 excel 文件中的数据

3) 修改数据

public class readInExcel {
static void readExcel() throws IOException
{

    JFileChooser fileChooser = new JFileChooser();

    fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));

    int returnVal = fileChooser.showOpenDialog(new JPanel());

    if(returnVal == JFileChooser.APPROVE_OPTION)
    {   
        File OGFile = fileChooser.getSelectedFile();

        String fileName = "user.home.Desktop";
        XSSFWorkbook wb = new XSSFWorkbook(OGFile);


        XSSFSheet sheet = wb.createSheet("FirstSheet");


        }   

}

Unreported Exception Error 意味着您正在调用一个可能会抛出异常并需要处理的方法。在这种情况下,您需要将该方法放在 try-catch 块周围以捕获异常或抛出它以便它可以由其他东西处理。

抱歉,我刚刚注意到您处理了 IOException。您遇到的另一个错误是 RuntimeException。当您创建 XSSFWorkbook 对象时会抛出此异常。当需要 InputStreamOPCPackage 类型时,您放入构造函数的参数是 File 类型。只需像这样创建一个 FileInputStream:

InputStream is = new FileInputStream(OGFile);
XSSFWorkbook wb = new XSSFWorkbook(is);

那么你应该不会再有 unhandled/thrown 错误了。