如何高性能的将Excel文件读入数据库 有一个8M的Excel文件需要导入到数据库中,直接用POI导入的话会抛出内存溢出的异常,然后我写了两个参数控制导入的行数,但是还是抛出异常,请问怎样解决这个问题?谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将excel文件截断的代码应该怎么写呢?我写出来之后还是抛异常啊~~~ 你首先要知道 HTML 和 Excel之间通过改后缀名是可以相互转换的。 所以,你可以先读HTML,这样内存不会溢出。 注: HTML 和 Excel之间的转换,你可以参考。打开一个EXCEL,然后,选择另存为网页。 你可以看一下这个HTML的源码。 还是有规律的,读取他吧 与POI无关,肯定是你使用的数据对象的问题.楼上,使用xml也比html强呀,不过你的主义比较馊的说,excel转换为html或者xml,excel不一样,html/xml格式的差异性是很大的,不可能每读一个excel就废很大的功夫去了解html/xml的格式,会累死人的 和POI是有关系的,好像最多处理不到7万条。楼上说的是,如果excel不固定的话,就比较麻烦了。不过,我处理的情况是一个报表,格式是固定的。反正这是一种解决方法。 废话,一个excel的sheet最多能插入65535行记录大数据量肯定需要分批处理呀,不可能一次都读入内存,或者插入到一个sheet中,超过65535,就需要换一个sheet开始插入 建议使用ms sql 2000的TDS功能导入数据库 呵呵,我给你一些建议。文件很大POI其实也可以实现的8M不算大。我导入过27M大的EXCEL文件。简单的办法看你的excel内容是不是很复杂,内容里面没有逗号的话,建议你把它另存为CSV文件。然后文件读取,一行一条记录,读进来之后使用java的String类的方法splite(好像是这么拼写),用逗号做分割符,传入进去,它自动会把字符串分割成一个string数组。之后的我就不说了。用此法之前,建议你先把excle的空单元格填充个你可以识别的标识,比如null。 POI肯定是没有问题的,我做过一个系统,一次批量处理上百Mb的Excel文件进数据库,一点问题都没有,就是花的时间长点而已.. java 时间追踪器(EventTracer) 数值类型提升问题 如何获取屏幕句柄 printwrite对文件大小的限制 右移>>>的问题 java怎样调用外部程序,程序的名称中有空格 ireport如何一页只显示一条 大家猜猜结果是什么? 为何直接打开连接applet的html文件,applet不能运行,而在jbuilder却可以? 哪有java的编译工具下载? 如何根据Component 的大小控制Container 的大小,以及自动移动Component 的位置 想了好久,不知道怎么做,希望各位能帮下忙
~~~
所以,你可以先读HTML,这样内存不会溢出。 注:
HTML 和 Excel之间的转换,你可以参考。打开一个EXCEL,然后,选择另存为网页。
你可以看一下这个HTML的源码。
还是有规律的,读取他吧
楼上,使用xml也比html强呀,不过你的主义比较馊的说,excel转换为html或者xml,excel不一样,html/xml格式的差异性是很大的,不可能每读一个excel就废很大的功夫去了解html/xml的格式,会累死人的
楼上说的是,如果excel不固定的话,就比较麻烦了。不过,我处理的情况是一个报表,格式是固定的。
反正这是一种解决方法。
大数据量肯定需要分批处理呀,不可能一次都读入内存,或者插入到一个sheet中,超过65535,就需要换一个sheet开始插入