导入带有接口和 class 的包

Importing a package with an interface and a class

我正在尝试创建一个 Java 包来与 Excel 交互,所以我正在使用 org.apache.poi 库。我在 POI site 上找到了显示以下内容的文档:

阅读和重写练习册

(truncated)
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);

当我尝试创建 Workbook 对象时,出现错误,提示它不知道类型。上面的文档没有显示导入语句,但如果我正确阅读 these POI docs,我应该能够导入 org.apache.poi.ss.usermodel.Workbook,(很可能我错了,因为我Java) 非常新),但尝试以下所有导入语句都会导致 Workbook 类型的错误。

import org.apache.poi.*;
import org.apache.poi.ss.*;
import org.apache.poi.ss.usermodel.*;

我应该注意到我为此使用了 Eclipse Neon,编辑器没有抱怨它找不到包,所以我不确定问题出在哪里。

Workbook wb = WorkbookFactory.create(inp);

我在编辑器中遇到的实际错误是 "Workbook cannot be resolved to a type",WorkbookFactory 也有同样的错误。

所以 TL;DR 是 POI 文档显示 Workbook 是 org.apache.poi.ss.usermodel 中的接口,而 WorkbookFactory 是同一用户模型包中的 class,但我无法弄清楚如何正确 import/use 它们。

编辑: 我收到的构建时间错误是

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Workbook cannot be resolved to a type
    WorkbookFactory cannot be resolved
    at spreadsheet.conversion.ConvertXLSXtoCSV.main(ConvertXLSXtoCSV.java:31)

我之前发的消息是编辑器弹出...我可以截图:

编辑:发布完整代码,因为,为什么不呢。 (多个导入语句 我们只是在尝试,大部分是在绝望中。)

package spreadsheet.conversion; 
import java.text.ParseException;
import org.apache.poi.*;
import org.apache.poi.ss.*;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.InputStream;
public class ConvertXLSXtoCSV {

    private static String inputfilename = "";
    private static String outputfilename = "";
    private static int debug = 0;


    private static void test(String arg) {
        System.out.println(arg);
    }


    public static void main(String[] args) throws ParseException, Exception {
        if (args.length != 1) {
            throw new Exception("Requires 1 parameter. Usage: ConvertXLSXtoCSV <filename>");
        }
        inputfilename = args[0];

        if(debug==1) {
            test(inputfilename);
        }
        InputStream inp = new FileInputStream(inputfilename);

        Workbook wb = WorkbookFactory.create(inp);


    }

感谢任何帮助。

尽管这对其他人没有帮助,但这是我想出的解决方案,所以我将其作为答案发布。非常感谢您对此的评论,但我一直讨厌 Eclipse,因此决定改用 NetBeans IDE。右键单击 Libraries,添加 JAR/Folder 和 select POI jar 文件非常简单,它(以及集成的 Maven 安装)处理了细节并且它立即完美运行并解决了所有库依赖项。

我认为这是因为 jar 文件损坏(很可能是在第一次下载时)。在这里你可以做什么。

您可以删除 maven 存储库中的所有 poi 文件夹 .m2/repository/org/apache/poi 然后您可以通过右键单击项目 > Maven > 更新项目来更新 maven。 Eclipse 将自动下载依赖项并自动重建工作区。

我面临着和你一样的事情,并且设法把它弄干净了。