我有一个要通过POI读取的电子表格(我同时具有xls和xlsx格式),但是在这种情况下,问题出在xls文件上。我的电子表格大约有10,000行75列,读入可能需要几分钟(尽管Excel会在几秒钟内打开)。我正在使用基于事件的读取,而不是将整个文件读取到内存中。我代码的内容如下。现在有点混乱,但这实际上只是一个很长的switch语句,大部分是从POI示例中复制的。
使用事件模型的POI性能如此缓慢通常吗?我有什么要加快速度的吗?我认为几分钟对于我的申请是不可接受的。
POIFSFileSystem poifs = new POIFSFileSystem(fis);
InputStream din = poifs.createDocumentInputStream("Workbook");
try
{
HSSFRequest req = new HSSFRequest();
listener = new FormatTrackingHSSFListener(new HSSFListener() {
@Override
public void processRecord(Record rec)
{
thisString = null;
int sid = rec.getSid();
switch (sid)
{
case SSTRecord.sid:
strTable = (SSTRecord) rec;
break;
case LabelSSTRecord.sid:
LabelSSTRecord labelSstR