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);
}
}
分享到:
相关推荐
在程序中读取excel文件比如XLS和XLSX,方法有很多,比如ADO,OLE,ODBC等方式。但是这些方法要么依赖于平台,要么读取速度慢,有的甚至需要电脑本身装有excel程序。 但是有一个付费的商业软件库Libxl,属于轻量化的...
然而,使用默认的方式读写Excel文件时,可能会遇到性能瓶颈,导致整个程序运行速度变慢。这在处理大量数据时尤为明显,如考勤系统的数据管理。本篇将详细介绍如何通过优化源代码来解决VC++读写Excel速度慢的问题,并...
Excel本身虽然功能强大,但在处理大量数据时会面临性能瓶颈,如打开速度慢、内存消耗大、计算效率低等。当文件超过一定大小,如超过100万行,Excel的性能会显著下降。 为了解决这些问题,开发者通常会选择使用编程...
但是,这种方式的缺点也很明显,它依赖于Excel客户端的安装,并且运行速度相对较慢,因为涉及到进程间通信。以下是一个简单的示例,展示如何使用InterOp读取Excel数据: ```csharp using Excel = Microsoft.Office....
- **读取Excel数据**: 通过指定工作表名称或索引,读取单元格内容,可以是单个单元格,也可以是整行或整列。 - **导入数据**: 将程序中的数据写入Excel,创建新的工作表或覆盖已有内容。 - **处理大量数据**: 支持大...
Jxl是一个开源的Java Excel API项目,通过Jxl,Java可以很方便的操作微软的Excel文档。除了Jxl之外,还有Apache的一个POI项目,也可以操作Excel,两者相比之下:Jxl使用方便,但功能相对POI比较弱。POI使用复杂,...
事件驱动解析是把文件转换成xml,然后一边读取一边解析,这样就对内存的占用就会很少,可以很好的处理poi出现OOM的问题。 maven添加需要的jar包 <groupId>org.apache.poi <artifactId>poi <version>3.15 ...
第四,ODBC方式可以读写EXCEL文件,但速度很慢,需要安装ODBC驱动程序。ADO方式与OLE方式类似,也可以读写EXCEL文件,但速度可能不高。 第五,LibXL是一个收费的EXCEL库,可以不依赖EXCEL读取XLS文件,包括设置格式...
openpyxl 是不需要其它支持的,但加载 Excel 文件的效率比 xlrd 慢 3 倍以上,内存使用在 10 倍以上。 2. 使用 win32com 读取 Excel 文件 使用 win32com 读取 Excel 文件可以避免读写格式上的问题。win32com 只是...
本文主要介绍了使用 Python 操作 Excel 的方法,包括读取 Excel 文件、插入数据库等操作。文章首先介绍了三种读写 Excel 的方法:xlrd、xlwt、xlutils、openpyxl 和 win32com,比较了它们的优缺点,并选择了 xlrd 和...
而`xlrd`库则使用了更高效的方法,它能够像访问数组一样直接定位到指定单元格的数据,因此读取速度较快,几乎不受文件大小影响。 在代码中,作者展示了如何使用`openpyxl`和`xlrd`分别读取同一文件中的特定单元格...
1. **读取Excel文件**:通过`OpenFileDialog`控件选取Excel文件。 2. **连接Excel文件**:利用OLE DB技术建立与Excel文件的连接。 3. **查询Excel数据**:编写SQL语句查询Excel中的特定表或工作表数据。 4. **插入...
这个脚本可能实现了在Excel表格的每m列或行之间插入n个空白列或行的功能,这对于组织数据、创建间隔或者准备数据格式化可能很有帮助。 3. **vba自带密码**: 这可能是指如何为VBA宏设置密码保护,以防止未经授权...
- **读取Excel文件**:Spreadsheet_Excel_Reader可以逐行或逐列遍历工作表,获取每个单元格的值,包括文本、数字、日期等类型,同时也可以处理公式和条件格式化。 - **写入Excel文件**:Spreadsheet_Excel_Writer...
这种方式可以直接创建、修改和保存Excel文件,但需要安装Excel,并且运行速度相对较慢。 - **libxlsxwriter**:专门用于创建.xlsx文件的C库,它不依赖于Excel,可以高效地生成大量数据的Excel文件。 - **xlsxio**...
在商业编程领域,数据导入与数据导出是至关重要的功能,尤其当涉及到与Excel这种广泛使用的电子表格软件交互时。本资源"商业编程-源码-数据导入与数据导出Excel.zip"提供了一套源码,帮助开发者实现这一功能。下面...
它支持读取Excel 95、97、2000等格式的文件,读取公式的值(支持Excel 97之后的公式),生成Excel 97格式的数据表,以及进行字体、数字、日期格式化,单元格阴影和颜色操作等功能。不过,它目前不支持读取图表信息和...
XML格式的Excel文件(XLSX)基于ZIP压缩,包含多个XML文档,这使得文件体积较大且读写速度较慢。相比之下,二进制格式的Excel文件(XLSB)使用了更紧凑的数据结构,减少了磁盘空间占用,同时加快了文件的加载和保存...
3. OPENROWSET:Sql Server提供的一种函数,可以直接从外部源(如Excel文件)读取数据,将其作为结果集返回,进而插入到数据库表中。 将Excel数据导入Sql Server的过程通常包括以下步骤: 1. 准备Excel数据:确保...