poi读excel内存溢出(poi获取excel行数)

Excel表格网 2022-12-11 02:21 编辑:admin 180阅读

1. poi读excel内存溢出

Workbook workbook = new SXSSFWorkbook(1000); poi有个机制 每次往内存中写1000条数据,这个1000你可以改的 尽量别大于10000条数据,写完1000条数据后再重新写,这样就不会内存溢出了。

2. poi获取excel行数

百度搜索圈T社区 免费行业视频教程www.aiquanti.com

package com.asima;

import java.io.FileInputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**

*

* @author asima

* @data 2006-10-18

*/

public class XlsToAccess

{

HSSFSheet globalSheet = null;

/*读取一个指定单元格内容*/

public String readCellValue(String pos)

{

int xpos;

short ypos;

int cellType; /*取得此单元格的类型 0-Numeric,1-String,3-null*/

String result; /*返回取得的单元格的值*/

ypos = (short) (pos.toUpperCase().charAt(0) - 65);

xpos = Integer.parseInt(pos.substring(1, pos.length())) - 1;

HSSFRow row = null; /* 定义excel中的行 */

HSSFCell cell = null; /* 定义excel中的单元格 */

/* 根据xPos和yPos取得单元格 */

row = globalSheet.getRow(xpos);

cell = row.getCell(ypos);

/** **************此处如果是空需要修改********************************** */

cellType = cell.getCellType();

switch (cellType)

{

case 0: /* 0-Numeric */

result = String.valueOf(cell.getNumericCellValue());

break;

case 1: /* 1-String */

result = cell.getStringCellValue();

break;

case 3: /* 3-null */

result = "";

break;

default:

result = "";

break;

}

return result;

}

/*读取excel文件并把内容插入到access表中*/

public void insertIntoTable() throws Exception

{

// 创建对Excel工作簿文件的引用

HSSFWorkbook workbook =

new HSSFWorkbook(new FileInputStream("D:/temp/test.xls"));

// 获得一个sheet

globalSheet = workbook.getSheetAt(0);

String value1 = readCellValue("c1");

String value2 = readCellValue("c2");

String value3 = readCellValue("c3");

String value4 = readCellValue("c4");

System.out.println(value1);

System.out.println(value2);

/* 插入数据库 */

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:asima";

Connection conn = DriverManager.getConnection(url);

PreparedStatement stmt =

conn.prepareStatement("insert into custom values(?,?,?,?)");

// 定义查询的SQL语句

stmt.setString(1, value1);

stmt.setString(2, value2);

stmt.setString(3, value3);

stmt.setString(4, value4);

stmt.executeUpdate

3. poi读取大数据量excel的方法

GoReport是基于J2EE和WEB的综合报表解决方案,特有的EXCEL+绑定数据列的报表设计方式,行列对称,能够轻松处理复杂的报表展现样式,部署方式简单而灵活,具有强大的报表展示功能。

GoReport报表工具前端使用Dhtmlx作为页面显示,本次升级将原有的html页面全部更新为Dhtmlx控件显示,主要是为了和公司的t-eplat平台界面风格一致,与t-eplat平台集成后感觉不出是两套系统。

GoReport报表工具使用Fis解决前端开发中自动化工具、性能优化、模块化框架、开发规范、代码部署、开发流程等问题。 GoReport报表工具使用beetl模版引擎对sql语句进行逻辑处理、参数配置、用户信息获取等,使得报表数据获取更加灵活、高效。

GoReport报表工具使用Spring security进行企业级权限控制,Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring security为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

报表工具使用Spring data jpa简化创建 JPA 数据访问层和跨存储的持久层功能。Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。通过使用Spring Data不仅简化和优化的代码质量,而且为GoReport报表工具的将来的大数据规划提供支撑。

GoReport报表工具使用自主研发的模型、模板、视图管理来简化页面开发,提供一种高效、稳定的开发模式,来简化前端页面与后台交互的开发。 GoReport报表工具使用Poi开源库来进行数据源与excel的绑定,从而生成各种excel样式报表。

GoReport报表工具使用jasperReports开源库对excel样式无法完成的报表进行编写,虽然jasperReports学习成本和开发难度都比较大,但可以对excel报表无法完成的功能进行补充。

4. poi读取Excel

使用pl/sqldeveloper可以完成1、控制面板-->管理工具-->数据源(ODBC)-->添加-->选择驱动*.xls-->完成-->选择你的excel表格2、pl/sql-->tools-->ODBCImporterDataFromODBC标签页:DSN选择刚刚添加的数据源,点击connectDataToOracle标签页:选择对应的表3、点击Import,可以完成导入需要注意的是,excel中列的顺序和数据库表的字段顺序最好保持一致,excel列的标题和字段名称保持一致,这样导入的时候,会自动匹配。

5. Excel 内存溢出

Dim Ro1&, Co%, I%, Ra As Range 改成Dim Ro1&, Co%, I&, Ra As Range i由整型改为长整型,另外excel最大行数好像是65536吧,i如果超过65536,后面 Range("B" & I) 也会出错。

6. poi读取excel内存溢出

用过的处理excel工具包有easypoi和easyexcel.从使用上来说,都挺简单易用。性能上都存在文件处理普遍存在的问题,大文件处理慢、占资源等问题。而easyexcel号称低内存消耗,对比上确实是easyexcel内存消耗较小。但是其实easypoi也有提供低内存消耗的处理方式,底层使用的方式也是一样的,就看谁封装的好用一点是了。

7. java读取excel内存溢出

代码如下: import java.io.*; import jxl.*; import jxl.write.*; public class CreateXLS { public static void main(String args[]) { try { //打开文件 WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls")); //生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet=book.createSheet("第一页",0); //在Label对象的构造子中指名单元格位置是第一列第一行(0,0) //以及单元格内容为test Label label=new Label(0,0,"test"); //将定义好的单元格添加到工作表中 sheet.addCell(label); /*生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123*/ jxl.write.Number

number = new jxl.write.Number(1,0,789.123); sheet.addCell(number); //写入数据并关闭文件 book.write(); book.close(); }catch(Exception e) { System.out.println(e); } } }

8. 读取excel内存溢出

检查数据是否为文本格式。 如果找不到哪个数漏了,可观察是否存在右上角带绿三角的单元格;也可将对齐方式设为常规(默认为常规),这时左对齐的为文本格式,右对齐的为数值格式。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片