java读取excel

package edu.qdgxy.util;

import jxl.Cell;
import jxl.Sheet;
import java.io.File;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Vector;
import java.io.FileInputStream;

import org.apache.struts2.ServletActionContext;

import jxl.Workbook;

/**
 * 耗时315.469秒 jxl.jar excel导入SQL 包 耗时131.469秒 耗时125.448秒(系数6000)
 */
public class ExcelRead2 implements Serializable{
	
	public static void main(String[] args) {
		ExcelRead2 cr = new ExcelRead2();
		long start = System.currentTimeMillis();// 记录开始时间
		cr.readExcel();// 开始执行
		long end = System.currentTimeMillis();
		System.out.println("============耗時:====" + ((end - start) / 1000.0));
	}

	public  Vector<Cell[]> readExcel() {
		String path="E:\\test";
		File fileDir = new File(path);
		File files[] = fileDir.listFiles();
		String filePath=files[0].getAbsolutePath();
		System.out.println(filePath);
		Vector<Cell[]> v = new Vector<Cell[]>();
		Workbook rwb = null;
		try {
			InputStream is = new FileInputStream(filePath);

			rwb = Workbook.getWorkbook(is);
			// 获取第一张Sheet表
			Sheet rs = rwb.getSheet(0);
			System.out.println("共"+rs.getRows()+"行");
			for (int i = 0; i < rs.getRows(); i++) {
				boolean bool=false;
				for (int j = 0; j < rs.getColumns(); j++) {
					if(rs.getCell(j, i).getContents().trim().isEmpty()==false){
						bool=true;//只要有一个单元非null即有效行
						System.out.println(rs.getCell(j, i).getContents().trim());
						break;
					}
				}
				if(bool){
					v.add(rs.getRow(i));// 放入一行记录
				}
			}
			is.close();
			rwb.close();
			System.gc();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return v;
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与算法进阶

Spark实战--学习UDF

UDF全称User-Defined Functions,用户自定义函数,是Spark SQL的一项功能,用于定义新的基于列的函数,这些函数扩展了Spark SQ...

1731
来自专栏JetpropelledSnake

Django学习笔记之Models与ORM操作

1196
来自专栏C#

奇妙的NULL值,你知道多少

《NULL值的多义性分析》       谈到NULL值,很多人都是很熟悉,但是深入了解后,又感觉到陌生,对其含义和用法,都无法很准确的理解。NULL在数据库和...

2095
来自专栏Java学习123

mysql分组查询

3209
来自专栏我的博客

奇偶排序

原理 奇偶排序法的思路是在数组中重复两趟扫描。第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……)。如果它们的关键字的值次序...

3706
来自专栏IT杂记

Mapreduce程序中reduce的Iterable参数迭代出是同一个对象

今天在对reduce的参数Iterable进行迭代时,发现一个问题,即Iterator的next()方法每次返回的是同一个对象,next()只是修改了Writa...

2075
来自专栏GreenLeaves

Oracle常用函数

Create Table Test6( id varchar2(30), name varchar2(30), age...

2039
来自专栏黑白安全

Mysql索引类型Btree和Hash的区别以及使用场景

遇到单表数据量大的时候很多开发者都会想到给相对的字段建立索引来提高性能(mysql索引的使用),但很少会去关注索引的类型该如何选择,在mysql中支持有两种类型...

2523
来自专栏iOS 开发杂谈

浅谈 Objective-C Associated Objects

Associated Objects 是 Objective-C 2.0 中 Runtime 的特性之一。 在 <objc/runtime.h> 中定义的三个...

1173
来自专栏JavaEE

mybatis笔记整理mybatis的基本用法及配置:

38911

扫码关注云+社区

领取腾讯云代金券