XSSFSheet无法强制转换为java.io.File
我正在从excel工作簿的特殊表格中读取一些值。我正在将这些值添加到我的数据库中。这没有任何问题 但是我还想将工作簿的工作表存储到我的数据库BLOB单元格中 我正在尝试将工作表转换为字节[]。我使用下面的代码 我正在尝试将工作表转换为java.io.File。但我得到以下例外 线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常: org.apache.poi.xssf.usermodel.XSSFSheet不能强制转换为java.io.FileXSSFSheet无法强制转换为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
有没有办法将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()
方法,看看是否可以创建一个只包含工作表的新工作簿。