导航:首页 > 网络数据 > java读取大数据excel

java读取大数据excel

发布时间:2022-12-28 10:03:03

『壹』 java怎么读取上传的excel文件

java怎么读取上传的excel文件,解决办法:

  1. 添加jar文件,java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。

  2. jxl对Excel表格的认识,每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示行,并且从上到下递增,从左到右递增。

  3. 对于合并单元格的以最左,最上的单元格的坐标为准。如下图中t.xls,一班名单(0,0),陈茵(1,2),陈开先(1,6)。

4.java代码对t.xls的读取


『贰』 java 如何一列一列读取excel数据。网上好多资料只是读取前两三行的例子,我的是读取一个列下所有的行内容

1、一般java读取excel数据都是按行读取,网上的资料都是例子,谁也不会拿个几千行的excel文件做测试;
2、既然你的文件只有一列,即使是按行读取也没有任何问题,只要按行读取,每行只取你需要的那一列就行了,非常的简单。
3、主要不是列的问题,是你根本不会java读取excel文件,网上那么多的例子也没看懂。

『叁』 java怎么读取excel数据

引入poi的jar包,大致如下:

importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.math.BigDecimal;
importjava.text.DecimalFormat;
importjava.text.SimpleDateFormat;

importorg.apache.poi.xssf.usermodel.XSSFCell;
importorg.apache.poi.xssf.usermodel.XSSFRow;
importorg.apache.poi.xssf.usermodel.XSSFSheet;
importorg.apache.poi.xssf.usermodel.XSSFWorkbook;

publicclassExcelUtil2007{
/**读取excel文件流的指定索引的sheet
*@paraminputStreamexcel文件流
*@paramsheetIndex要读取的sheet的索引
*@return
*@throwsFileNotFoundException
*@throwsIOException
*/
(InputStreaminputStream,intsheetIndex)throwsFileNotFoundException,IOException
{
returnreadExcel(inputStream).getSheetAt(sheetIndex);
}
/**读取excel文件的指定索引的sheet
*@paramfilePathexcel文件路径
*@paramsheetIndex要读取的sheet的索引
*@return
*@throwsIOException
*@throwsFileNotFoundException
*/
(StringfilePath,intsheetIndex)throwsFileNotFoundException,IOException
{
returnreadExcel(filePath).getSheetAt(sheetIndex);
}
/**读取excel文件的指定索引的sheet
*@paramfilePathexcel文件路径
*@paramsheetName要读取的sheet的名称
*@return
*@throwsIOException
*@throwsFileNotFoundException
*/
(StringfilePath,StringsheetName)throwsFileNotFoundException,IOException
{
returnreadExcel(filePath).getSheet(sheetName);
}
/**读取excel文件,返回XSSFWorkbook对象
*@paramfilePathexcel文件路径
*@return
*@throwsFileNotFoundException
*@throwsIOException
*/
(StringfilePath)throwsFileNotFoundException,IOException
{
XSSFWorkbookwb=newXSSFWorkbook(newFileInputStream(filePath));
returnwb;
}
/**读取excel文件流,返回XSSFWorkbook对象
*@paraminputStreamexcel文件流
*@return
*@throwsFileNotFoundException
*@throwsIOException
*/
(InputStreaminputStream)throwsFileNotFoundException,IOException
{
XSSFWorkbookwb=newXSSFWorkbook(inputStream);
returnwb;
}
/***读取excel中指定的单元格,并返回字符串形式的值
*1.数字
*2.字符
*3.公式(返回的为公式内容,非单元格的值)
*4.空
*@paramst要读取的sheet对象
*@paramrowIndex行索引
*@paramcolIndex列索引
*@paramisDate是否要取的是日期(是则返回yyyy-MM-dd格式的字符串)
*@return
*/
(XSSFSheetst,introwIndex,intcolIndex,booleanisDate){
Strings="";
XSSFRowrow=st.getRow(rowIndex);
if(row==null)return"";
XSSFCellcell=row.getCell(colIndex);
if(cell==null)return"";
if(cell.getCellType()==0){//数字
if(isDate)s=newSimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue());
elses=trimPointO(String.valueOf(getStringValue(cell)).trim());
}elseif(cell.getCellType()==1){//字符(excel中的空格,不是全角,也不是半角,不知道是神马,反正就是""这个)
s=cell.getRichStringCellValue().getString().replaceAll("","").trim();
// s=cell.getStringCellValue();//07API新增,好像跟上一句一致
}
elseif(cell.getCellType()==2){//公式
s=cell.getCellFormula();
}
elseif(cell.getCellType()==3){//空
s="";
}
returns;
}
/**如果数字以.0结尾,则去掉.0
*@params
*@return
*/
publicstaticStringtrimPointO(Strings){
if(s.endsWith(".0"))
returns.substring(0,s.length()-2);
else
returns;
}

/**处理科学计数法和百分比模式的数字单元格
*@paramcell
*@return
*/
(XSSFCellcell){
StringsValue=null;
shortdataFormat=cell.getCellStyle().getDataFormat();
doubled=cell.getNumericCellValue();
BigDecimalb=newBigDecimal(Double.toString(d));
//百分比样式的
if(dataFormat==0xa||dataFormat==9){
b=b.multiply(newBigDecimal(100));
//Stringtemp=b.toPlainString();
DecimalFormatdf=newDecimalFormat("0.00");//保留两位小数的百分比格式
sValue=df.format(b)+"%";
}else{
sValue=b.toPlainString();
}
returnsValue;
}
}

『肆』 java 读取大EXCEL如何解决

你是刚开始把excel的流读取的时候就内存溢出了吗?我建议如果内存吃紧

  1. 增加jvm启动内存

  2. 程序中及时释放内存,比如,excel中读取一行后,就把这一行保存到数据库,然后java内设置为null,让GC释放内存。然后一些list之类的,不用了也clear+setNull掉

  3. excel7万数据的话,应该几百M内存就够了,不算过分

『伍』 如何用java读取大数据量的EXCEL文件

用FileInputStream就能读取任何格式的文件。可以复制文件。
但是如果你想通过自己写的程序处理文件里的内容是不现实的,因为每种文件都有设计者设计好的格式。

『陆』 java如何读取整个excel文件的内容

在Java中读取Excel文件的内容

在这里,我使用的是一个叫Java Excel API的东西,类似的还有的POI,不过感觉那个

太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中一点问题没出。

一、下载地址

http://www.andykhan.com/jexcelapi/

二、特性

可以读取Excel 95, 97, 2000文件

可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug)

生成Excel 97格式的电子表格

支持字体、数字和日期格式化

支持单元格的颜色和阴影

可以编辑现有的文件

三、读文件

//声明一下,记得后面要关闭哦。。

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File("d:\temp\TestRead.xls"));

} catch (Exception e) {

throw new Exception("file to import not found!");

}

Sheet sheet = workbook.getSheet(0);

Cell cell = null;

int columnCount=3;

int rowCount=sheet.getRows();

for (int i = 0; i<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,这里的两个参数,第一个是表示列的,第二才表示行

cell=sheet.getCell(j, i);

//要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确

if(cell.getType()==CellType.NUMBER){

System.out.print(((NumberCell)cell).getValue());

}

else if(cell.getType()==CellType.DATE){

System.out.print(((DateCell)cell).getDate());

}

else{

System.out.print(cell.getContents());

}

//System.out.print(cell.getContents());

System.out.print(" ");

}

System.out.print(" ");

}

//关闭它,否则会有内存泄露

workbook.close();

『柒』 怎么用Java读取两个Excel里的数据并进行

/**
*
*标题:readExcel*描述:读取Excel文件数据* @param excelfilePath Excel文件路径
* @param startRow 开始行
* @param startCol 开始列
* @return List>
* @throws IOException
* @throws BiffException
*/
public List> readExcel(String excelfilePath,int startRow, int startCol)
throws IOException, BiffException {
// 读取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List> alldata = new ArrayList>();
Map data = null;
alldata.clear();
// 获得当前Excel表共有几个sheet
Sheet[] sheets = rwb.getSheets();
// 获得表数
int pages = sheets.length;
// 将excel表中的数据读取出来
// 在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
for (int i = 0; i < pages; i++) {
//这里读取excel中每个sheet的数据,Sheet sheet = rwb.getSheet(i); 读取第二个sheet就是getSheet(1);
Sheet sheet = rwb.getSheet(i);
int cols = sheet.getColumns(); // 列
// 读取每一行对应的列数目
// 循环读取每一行的全部列数目的内容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new HashMap();
// 行循环,Excel的行列是从(0,0)开始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
data.put("bgbh", excelRows.getContents());
}
alldata.add(data);
}
}
ins.close();
return alldata;
}

『捌』 java利用poi读大数据量xlsx除了用xml方式读取外,还有其他方法吗

poi是把excel当做【文来档】来处理源的,自然只有XSSFWorkbook类来操作它,也就是你说的xml方式。在poi的眼里,excel文档里的并不是【数据】而是【表格】。
你如果想要把excel当做【数据源】来处理,应该用odbc的方式,将你需要的excel文件变成一个odbc数据源,然后用ResultSet set = smt.executeQuery("select * from [sheet1$]");来读取数据,效率跟access表现相当(毕竟excel有数据量上限,实际表现大多数时候都比access还要快)

『玖』 用java读excel的数据。

通过java的poi读取xlsx文件:

将excel文件使用文件流读取

把excel的文件流转化成excel的工作薄

获取工作薄的sheet(工作表),迭代获取

最后再次迭代每一个sheet,获取每一行的每一个单元格,把数据取出存储起来

『拾』 java怎么读取很大的excel(20w条数据),怎么通过字节流获取到单元格的内容

使用java poi
package webservice;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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;

public class ExcelController {

@SuppressWarnings("deprecation")
public void excel() throws FileNotFoundException, IOException{

String filename = "d:\\excel.xls";
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
//按名引用excel工作表
// HSSFSheet sheet = workbook.getSheet("JSP");
//也可以用以下方式来获取excel的工作表,采用工作表的索引值
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row ;
HSSFCell cell1;
int rows=sheet.getLastRowNum();
for(int icount=0;icount<rows;icount++){
row = sheet.getRow(icount);
int line=row.getPhysicalNumberOfCells();
for(int j=0;j<line;j++){
cell1= row.getCell(j);
System.out.println(cell1+"--"+icount+"---"+j);
}
}
//打印读取值
// System.out.println(cell.getStringCellValue());

//新建一输出流
FileOutputStream fout = new FileOutputStream(filename); //PS:filename 是你另存为的路径,不处理直接写入模版文件
//存盘
workbook.write(fout);
fout.flush();
//结束关闭
fout.close();

}

public HSSFCell getCell(HSSFRow row, int index) {

// 取得分发日期单元格
HSSFCell cell = row.getCell(index);

// 如果单元格不存在
if (cell == null) {

// 创建单元格
cell = row.createCell(index);
}

// 返回单元格
return cell;
}

public static void main(String[] args) {
ExcelController ec = new ExcelController();
try {
ec.excel();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

阅读全文

与java读取大数据excel相关的资料

热点内容
怎么用手机登录编程猫 浏览:400
文本md204显示器如何编程 浏览:705
如何将表中重复数据标记 浏览:859
中级数据库系统工程师应用技术考什么 浏览:404
博途编程如何设置停止键 浏览:409
python3删除文件内容 浏览:754
如何优化seo数据分析 浏览:132
64位win7下部分32位程序不能运行 浏览:206
dnf90版本剑魂钝器流 浏览:649
陌秀直播苹果怎么下载ipad 浏览:732
简述网络直接市场调查方式有哪些 浏览:683
怎么连接移动网络设置 浏览:781
电脑网卡怎么连接网络连接不上网吗 浏览:838
刷子公司网站怎么做 浏览:272
86版本艾尔文测试 浏览:714
深宫曲文件夹是哪个 浏览:618
苹果u盘修复工具哪个好用 浏览:124
微信动态表情包搞笑 浏览:436
可以去哪里找编程老师问问题 浏览:608
win10lol全屏 浏览:25

友情链接