Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导入带有接口和类的包_Java_Eclipse_Apache Poi_Eclipse Neon - Fatal编程技术网

Java 导入带有接口和类的包

Java 导入带有接口和类的包,java,eclipse,apache-poi,eclipse-neon,Java,Eclipse,Apache Poi,Eclipse Neon,我试图创建一个Java包来与Excel接口,因此我使用org.apache.poi库。我在上找到了显示以下内容的文档: 阅读和重写工作手册 (truncated) Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt(0); 当我尝试创建工作簿对象时,会出现错误,它不知道该对象的类型。上面的文档没有显示导入语句,但是如果我阅读正确,我应该能够导入org.apache.poi.ss.usermodel.Wor

我试图创建一个Java包来与Excel接口,因此我使用org.apache.poi库。我在上找到了显示以下内容的文档:

阅读和重写工作手册

(truncated)
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
当我尝试创建工作簿对象时,会出现错误,它不知道该对象的类型。上面的文档没有显示导入语句,但是如果我阅读正确,我应该能够导入
org.apache.poi.ss.usermodel.Workbook
,(很可能我错了,因为我对Java非常陌生),但是尝试以下所有导入语句都会导致工作簿类型的错误

import org.apache.poi.*;
import org.apache.poi.ss.*;
import org.apache.poi.ss.usermodel.*;
我应该注意的是,我正在使用EclipseNeon来实现这一点,而编辑器并没有抱怨它找不到包,所以我不确定问题出在哪里

Workbook wb = WorkbookFactory.create(inp);
我在编辑器中遇到的实际错误是,
“工作簿无法解析为类型”
,WorkbookFactory也出现了同样的错误

因此,TL;DR是POI文档显示工作簿是
org.apache.POI.ss.usermodel
中的一个接口,WorkbookFactory是同一个usermodel包中的一个类,但我不知道如何正确导入/使用它们

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

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;
导入java.text.ParseException;
导入org.apache.poi.*;
导入org.apache.poi.ss.*;
导入org.apache.poi.ss.usermodel.*;
导入java.io.FileInputStream;
导入java.io.InputStream;
公共类转换器xlsxtocsv{
私有静态字符串inputfilename=“”;
私有静态字符串outputfilename=“”;
私有静态int-debug=0;
专用静态无效测试(字符串参数){
系统输出打印项次(arg);
}
公共静态void main(字符串[]args)引发异常,异常{
如果(args.length!=1){
抛出新异常(“需要1个参数。用法:convertXLSXTOSV”);
}
inputfilename=args[0];
如果(调试==1){
测试(输入文件名);
}
InputStream Input=新文件InputStream(inputfilename);
工作簿wb=WorkbookFactory.create(inp);
}

非常感谢您的帮助。

尽管这可能对其他人毫无帮助,但这是我提出的解决方案,因此我将其作为答案发布。非常感谢您对这一点的评论,但我一直不喜欢Eclipse,并决定改用NetBeans IDE。右键单击库,添加JAR/文件夹,然后选择POI ja,这非常简单r文件,它(以及集成的Maven安装)处理了这些细节,它一开始就工作得很好,解决了所有库依赖关系


我认为这是由于jar文件损坏(很可能是在第一次下载时)。下面是您可以做的

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


我面临着和你一样的问题,并设法把它弄清楚。

你能发布完整的错误信息吗?你是在编译时还是在运行时得到的?最好还是写一点。我猜实际的信息是“工作簿无法解析为某个类型”。始终发布准确的错误信息(复制并粘贴它)。是否添加了所需的库(poi及其依赖项)在eclipse项目的构建路径中?请参阅,我猜
HSSFWorkbook
XSSFWorkbook
之间可能存在冲突。如果您的类路径中有POI jar,您可以让eclipse为您添加导入,以便eclipse添加特定的导入,而不是带有星号的导入,星号可能包含一个重要的rt解析。在源代码中使用“重新组织导入”选项,或在每个类附近键入
Ctrl+space
,以便Eclipse可以添加其导入,并确保它是正确的。我得到了建议的xssf工作簿,它可以处理大文件,因此如果您可以使用xssf工作簿,那么请使用
import org.apache.poi.xssf.usermodel.xssf单元格;导入org.apache.poi.xssf.usermodel.XSSFRow;导入org.apache.poi.xssf.usermodel.XSSFSheet;导入org.apache.poi.xssf.usermodel.xssf工作簿;
这是一个不错的教程,
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);


    }