Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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/2/ruby-on-rails/62.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
XSSFSheet无法强制转换为java.io.File_Java_Database_Apache Poi_Inputstream - Fatal编程技术网

XSSFSheet无法强制转换为java.io.File

XSSFSheet无法强制转换为java.io.File,java,database,apache-poi,inputstream,Java,Database,Apache Poi,Inputstream,我正在从excel工作簿的特殊表格中读取一些值。我正在将这些值添加到我的数据库中。这没有任何问题 但是我还想将工作簿的工作表存储到我的数据库BLOB单元格中 我正在尝试将工作表转换为字节[]。我使用下面的代码 我正在尝试将工作表转换为java.io.File。但我得到以下例外 线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常: org.apache.poi.xssf.usermodel.XSSFSheet不能强制转换为java.io.Fil

我正在从excel工作簿的特殊表格中读取一些值。我正在将这些值添加到我的数据库中。这没有任何问题

但是我还想将工作簿的工作表存储到我的数据库BLOB单元格中

我正在尝试将工作表转换为字节[]。我使用下面的代码

我正在尝试将工作表转换为java.io.File。但我得到以下例外

线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常: org.apache.poi.xssf.usermodel.XSSFSheet不能强制转换为java.io.File


有没有办法将wb.getSheet(“İN”);“转换为java.io.File或其他更好的方法?

您不能只在两个不相关的类之间转换。 在您的情况下,我认为您应该使用工作表工作簿的
getBytes()
,因为工作表对象没有以下内容:

byte[] buffer = sheet.getWorkbook().getBytes();
看起来您的
oku.wb
已经包含工作簿,在这种情况下,您可以直接在
oku.wb
上调用
getBytes()

byte[] buffer = oku.wb.getBytes();
EDITBlast,我从自己的一个项目中选择了这段代码,但它使用了
HSSFSheet
而不是
XSSFSheet
。因此,您最好使用工作簿的
write()
方法,如注释中所述:

public byte[] convert(XSSFSheet sheet) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        sheet.getWorkbook().write(baos);
    } catch (IOException e) {
        // blah
    }
    return baos.toByteArray();
}

不能在两个不相关的类之间强制转换。 在您的情况下,我认为您应该使用工作表工作簿的
getBytes()
,因为工作表对象没有以下内容:

byte[] buffer = sheet.getWorkbook().getBytes();
看起来您的
oku.wb
已经包含工作簿,在这种情况下,您可以直接在
oku.wb
上调用
getBytes()

byte[] buffer = oku.wb.getBytes();
EDITBlast,我从自己的一个项目中选择了这段代码,但它使用了
HSSFSheet
而不是
XSSFSheet
。因此,您最好使用工作簿的
write()
方法,如注释中所述:

public byte[] convert(XSSFSheet sheet) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        sheet.getWorkbook().write(baos);
    } catch (IOException e) {
        // blah
    }
    return baos.toByteArray();
}

不,无法将XSSFSheet强制转换为文件。您可以使用XSSFWorkbook.write()方法将整个xlsx文档保存到文件中。否,无法将XSSFSheet强制转换为文件。您可以使用XSSFWorkbook.write()方法将整个xlsx文档保存到文件中谢谢您的回答。此代码正在运行,但有一个小问题。这将存储整个工作簿。我只想存储名为“İN”的工作表
XSSFSheet
始终包含在
XSSFWorkbook
中,因此不能单独保存它们。您最好尝试使用
wb.cloneSheet()
方法,看看是否可以创建一个只包含工作表的新工作簿。谢谢您的回答。此代码正在运行,但有一个小问题。这将存储整个工作簿。我只想存储名为“İN”的工作表
XSSFSheet
始终包含在
XSSFWorkbook
中,因此不能单独保存它们。您最好尝试使用
wb.cloneSheet()
方法,看看是否可以创建一个只包含工作表的新工作簿。