读取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);
}
}

你可能感兴趣的:(java,sql,Excel,J#)