Java 按顺序将Excel文件(保存在多个blob中)读取到一个InputStream中
我需要处理大的Java 按顺序将Excel文件(保存在多个blob中)读取到一个InputStream中,java,sql,excel,hibernate,memory,Java,Sql,Excel,Hibernate,Memory,我需要处理大的Excel文件。我的问题是堆空间,尤其是XLS格式。即使我有一个apose LighCellsAPI来按顺序解析它,我也需要从chuncks中的数据库中检索该文件 到目前为止,我在数据库中有40kb的文件块。我有一个Import表(存储与导入相关的一般信息,例如开始和结束时间、数据类型等)和一个ImportData表(包含作为blob的数据块)。我在导入和导入数据之间有一对多关系: <hibernate-mapping> <class name="com.co
Excel
文件。我的问题是堆空间
,尤其是XLS
格式。即使我有一个apose LighCells
API来按顺序解析它,我也需要从chuncks中的数据库中检索该文件
到目前为止,我在数据库中有40kb的文件块。我有一个Import
表(存储与导入相关的一般信息,例如开始和结束时间、数据类型等)和一个ImportData
表(包含作为blob的数据块)。我在导入
和导入数据
之间有一对多关系:
<hibernate-mapping> <class name="com.company.import.pojos.Import
table="IMPORT_TABLE">
<id name="id" type="integer">
<column name="ID" />
<generator class="some.id.generator.IdGenerator"></generator>
</id>
<property name="startTime" type="timestamp">
<column name="START" />
</property>
<property name="endTime" type="timestamp">
<column name="END" />
</property>
<property lazy="false" name="datatzpe" type="com.company.import.enums.ImportDataType">
<column name="DATATYPE" />
</property>
<bag name="importDataList" table="IMPORT_DATA" lazy="true" cascade="all" inverse="false">
<key column="IMPORT_TABLE_ID"/>
<one-to-many class="com.company.import.pojos.ImportData"/>
</bag>
</class> </hibernate-mapping>
<hibernate-mapping> <class
name="com.company.import.pojos.ImportData" table="IMPORT_DATA">
<id name="id" type="integer">
<column name="ID" />
<generator class="some.id.generator.IdGenerator"></generator>
</id>
<property name="importTableID" type="integer">
<column name="IMPORT_TABLE_ID" />
</property>
<property name="data" type="binary">
<column name="DATA" />
</property>
<property name="order" type="integer">
<column name="ORDER" />
</property> </class> </hibernate-mapping>
您可能需要实现自己的InputStream,它将多个IS作为一个来处理,当您到达一个IS的末尾时,您可以关闭它并选择下一个来填充读取缓冲区的其余部分 我不知道这种行为的任何实现
您的文件有多大?我们希望支持至少100 MB的文件(XLS和XLSX格式)。XLS格式更难按顺序处理,我不知道
Aspose
是否可以这样做。现在我正在尝试为处理API提供一个InputStream
,它可以处理几个blob。
InputStream inStream = ....;// get the input stream somehow
Workbook workbook = new Workbook(inStream);