读取Excel,使用流的方式--速度很慢

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jxl.Cell;
import jxl.CellType;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;

public class UploadExcel
{

private static ArrayList lst=new ArrayList();

//将数据保存在 HashMap中
private static ArrayList<Map<String,Object>> mlist=null;


//表名
private static String tableName;

//文件路径
private static String filepath;

/**
*读取表中的数据,并将数据存放到一个三位数组中
*
* **/
public static ArrayList<Map<String,Object>> readExcel(InputStream stream)
{
System.out.println("InputStream start: ");
mlist=new ArrayList<Map<String,Object>>();
try
{
Workbook rwb=Workbook.getWorkbook(stream);
Sheet st[]=rwb.getSheets();
System.out.println("表格个数: "+st.length);
for(int a=0;a<st.length;a++)
{
ArrayList alList=new ArrayList();
ArrayList tablenames=new ArrayList();
ArrayList tableAndContents=new ArrayList();
// System.out.println("=第"+(a+1)+"张表=");
tableName=st[a].getName().trim();
int b=0;
//tmonth
int tmonth=0;

//行
for(int i=1;i<st[a].getRows();i++)
{
Map mp=new HashMap();
if(st[a].getCell(0,i).getContents()==null || st[a].getCell(0,i).getContents().equals("")) break;

int columns=st[a].getColumns();
tmonth=0;
if(columns>5) columns=5;
// System.out.println(columns+" : "+st[a].getColumns());
for(int j=0;j<columns;j++)
{

if(st[a].getCell(j,i).getContents()==null || st[a].getCell(j,i).getContents().equals("")) break;

Cell cl=st[a].getCell(j, i);
String strcl=new String();
if (j == 0)
{
if (st[a].getCell(0, i).getType() == CellType.NUMBER)
{
NumberCell cd = (NumberCell) st[a].getCell(0, i);
strcl=ChangeUtil.getDateInfor(cd.getValue());
tmonth=ChangeUtil.getDate(cd.getValue());
}
else
{
break;
}
}
else
strcl=cl.getContents().trim();
strcl=ChangeUtil.change(strcl);
mp.put(array[j], strcl);
}

if(mp!=null && tmonth!=0){
mp.put(array[array.length-2],"IF"+tableName);
mp.put(array[array.length-1], tmonth);
mlist.add(mp);
System.out.println("hello: "+mlist);
}
}
}
rwb.close();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return mlist;
}
public static List<Map<String,Object>>loadExcel(InputStream stream)
{
return readExcel(stream);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值