如何用javajava从excel读取数据excel中的数据?下面的例子不能读出自己写的excel数据

相关文章推荐
package com.
import java.io.IOE
import java.util.ArrayL
import java.util.D
在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Jav...
1.jxl,poi简介
Java读取Excel文件有两种途径,jxl跟poi方式,其中jxl只能处理xls的文件,现已停止更新,而poi方式可以处理xls跟xlsx文件。推荐使用poi方式。
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.IOE
java解析excel并批量入库
java读取excel文件
JAVA中读写EXCEL
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较...
package com.csii.
import java.io.F
import java.io.FileInputS
import java.io....
Java解析Excel实例解析
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)相关文章推荐
java中使用poi开放的api来操作excel中的数据
官网:http://poi.apache.org/
写了一个java excel的demo,代码如下;
package com.lc_k...
应工作需要,特做此实验。
1、应用jdbc:odbc桥接和简单的access数据库;
2、excel表格和access表格中的相关字段都已经设置好,且字段数目已知;
3、此程序主要目的是由手头的...
java SpringMVC中 POI读取数据库数据并写入Excel表格中,并实现下载功能
首先我们需要一个jxl.jar文件,下载地址:/jexcelapi/download.html
数据库连接jar包根据你安装的oracle数据库版本选择...
JAVA通过poi进行Excel文档的读取操作
java连接mysql数据库:
因为之前一直使用的是XAMPP这个环境工具,后来又下载了一个WAMP想来学习使用PHP。
这两个当中都集成了MYSQL数据库,直接点击start MYSQL就可以了...
JAVA读取Excel表格,建数据库建表,并生成java实体实例,这一篇通过JAVA读取Excel,将Excel表结构同步到数据库中,并生成java实体类。与上一篇类似,这里只介绍类说明,具体实现,可...
数据库的元信息:首先介绍一下数据库的元信息(元数据):元数据(Metadata)是关于数据的数据。元数据是描述数据仓库内数据的结构和建立方法的数据。存储的数据是什么类型,什么驱动等等,这些描述数据的数...
//oper_excel.java
import java.io.F
import jxl.C
import jxl.S
import jxl.W
引言工作中可能会遇到对Excel读取和写入,如果我们自己手动写的话,会很麻烦,但是Apache中有poi工具类。poi工具类封装好了对于Excel读取和写入,我们需要用的时候,直接调用该方法就好了。 ...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)sponsored links
Java读写Excel文件中数据的简便方法
Java开发项目中经常会碰到处理Excel文件中数据的情况,这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出日(含)之后,并且SELLERID等于18的订单。找到的数据写入order_result.xls文件。
Excel文件orders.xls的内容如下:
ORDERID CLIENT SELLERID AMOUNT ORDERDATE
1 UJRNP 17 392
2 SJCH 6 /9 15:28
3 UJRNP 16 /11/5 15:28
4 PWQ 9 /11/8 15:28
5 PWQ 11 /12 15:28
6 HANAR 18 /7 15:28
7 EGU 2 /11/6 15:28
8 VILJX 7 /9 15:28
9 JAYB 14 /11/12 15:28
10 JAXE 19 /11/12 15:28
11 SJCH 7 /11/10 15:28
12 QUICK 11 /11/13 15:28
13 HL 12 /11/21 15:28
14 JAYB 1 /16 15:28
15 MIP 16 /19 15:28
16 AYWYN 4 /21 15:28
Java程序的编写思路是
1、 从Excel文件逐行读入数据保存到List对象sourceList中。
2、 遍历List对象sourceList,如果满足条件就保存到结果List对象resultList中。
3、 遍历reslutList,逐行保存到输出Excel文件中。
其中包含一些处理不同数据类型的语句,具体代码如下:
publicstatic void myExcel() throws Exception {
//读excel数据
HSSFWorkbookworkbook=
newHSSFWorkbook(new FileInputStream(newFile("d:/file/orders.xls")));
Sheet sheet=workbook.getSheetAt(0);//读取第一个sheet
List&Map&String,Object&&sourceList= newArrayList&Map&String,Object&&();
List&Map&String,Object&&resultList=new ArrayList&Map&String,Object&&();
SimpleDateFormatformat = new SimpleDateFormat("yyyy-M-ddHH:mm:ss");
for(int i = 1; i &sheet.getPhysicalNumberOfRows(); i++) {//逐行处理excel数据
Row row=sheet.getRow(i);
Map&String,Object& order=newHashMap&String,Object&();
Cell cell0 = row.getCell(0);
cell0.setCellType(Cell.CELL_TYPE_STRING);
//整数数据要转为txt,否则会变成浮点数
Cellcell1 = row.getCell(1);
cell1.setCellType(Cell.CELL_TYPE_STRING);
Cellcell2 = row.getCell(2);
cell2.setCellType(Cell.CELL_TYPE_STRING);
order.put("ORDERID",cell0.toString());
order.put("CLIENT",cell1.toString());
order.put("SELLERID",cell2.toString());
order.put("AMOUNT",row.getCell(3).toString());
//处理日期类型的数据
order.put("ORDERDATE",
HSSFDateUtil.getJavaDate(row.getCell(4).getNumericCellValue()));
sourceList.add(order);
for(int i = 0, len = sourceList.size(); i & i++) {//按照条件过滤
Map&String,Object&order =(Map&String,Object&) sourceList.get(i);
System.out.println("1order.get(\"SELLERID\")="+order.get("SELLERID"));
if( Integer.parseInt(order.get("SELLERID").toString())==18 &&
((Date)order.get("ORDERDATE")).after(format.parse("3:59:59")) )
{//判断是否符合条件
resultList.add(order);//符合条件的加入List对象resultList
//写excel文件
HSSFWorkbookworkbook1 = new HSSFWorkbook();//创建excel文件对象
Sheetsheet1 = workbook1.createSheet();//创建sheet对象
row1= sheet1.createRow(0);//第一行,标题
row1.createCell(0).setCellValue("ORDERID");
row1.createCell(1).setCellValue("CLIENT");
row1.createCell(2).setCellValue("SELLERID");
row1.createCell(3).setCellValue("AMOUNT");
row1.createCell(4).setCellValue("ORDERDATE");
for(int i = 1, len = resultList.size(); i & i++) {//循环创建数据行
row1= sheet1.createRow(i);
row1.createCell(0).setCellValue(resultList.get(i).get("ORDERID").toString());
row1.createCell(1).setCellValue(resultList.get(i).get("CLIENT").toString());
row1.createCell(2).setCellValue(resultList.get(i).get("SELLERID").toString());
row1.createCell(3).setCellValue(resultList.get(i).get("AMOUNT").toString());
row1.createCell(4).setCellValue(format.format((Date)resultList.get(i).get("ORDERDATE")));
FileOutputStreamfos = newFileOutputStream("d:/file/orders_result.xls");
workbook1.write(fos);//写文件
fos.close();
程序执行后生成的excel文件数据如下:
ORDERID CLIENT SELLERID AMOUNT ORDERDATE
432 ERNSH 18 0-1-13 15:28:05
444 SJCH 18 0-1-25 15:28:05
452 HP 18 0-2-01 15:28:05
492 HP 18 0-3-07 15:28:05
512 BTMMU 18 0-3-27 15:28:05
524 PJIPE 18 0-4-09 15:28:05
637 HP 18 0-8-01 15:28:05
638 JOPO 18 294.0
myExcel函数中有一多半代码是读写和处理Excel文件和数据类型的,比较复杂。条件过滤的代码虽然不多,但是却不够通用。过滤条件是固定的,如果有变化,就必须要改代码。如果希望变成动态过滤条件,那么就要写动态表达式解析程序了。理论上可以实现类似SQL那样灵活的过滤条件,但是程序比较难写,调试也比较复杂。
如果考虑采用集算器esProc作为辅助来实现Excel数据的处理,将会使这个程序的开发容易很多。esProc是专门为结构化(半结构化)数据设计的编程语言,可以写出比较简单的Excel文件处理程序。Java程序调用esProc脚本也非常简单。
程序员可以将条件“日(含)之后,并且SELLERID等于18的订单。”作为参数where传递给esProc程序,如下图:
Where的值是:ORDERDATE&=date()&& SELLERID==18。esProc的程序代码如下:
A1:定义一个file对象,导入数据,第一行是标题。esProc的集成开发环境可以直观的显示出导入的数据,如上图右边部分。如果访问xlsx文件,可以写成=file("D:/file/orders.xlsx").importxls@xt()。
A2:按照条件过滤。这里使用宏来实现动态解析表达式,其中的where就是传入参数。集算器将先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行。这个例子中最终执行的是:=A1.select(ORDERDATE&=date() && SELLERID==18)。
A3:将符合条件的结果集写入excel文件。
过滤条件发生变化时不用改变程序,只需改变where参数即可。例如,条件变为:日(含)之后,并且SELLERID等于18的订单,或者CLIENT等于PWQ的订单。Where的参数值可以写为:CLIENT=="PWQ"||ORDERDATE&=date() && SELLERID==18。执行之后,A2中的结果集如下图:
我们可以在Java程序中调用这段esProc程序,使用esProc提供的jdbc即可完成。将上述esProc程序保存为test.dfx文件的话,Java调用的代码如下:
//建立esProcjdbc连接
Class.forName("com.esproc.jdbc.InternalDriver");
con= DriverManager.getConnection("jdbc:esproc:local://");
//调用esProc程序(存储过程),其中test是dfx的文件名
com.esproc.jdbc.InternalCStatementst=(com.esproc.jdbc.InternalCStatement)con.createStatement();
//设置参数
st.setObject(1,"ORDERDATE&=date()&& SELLERID==18 || CLIENT==\"PWQ\"");//参数就是动态的过滤条件
//执行esProc存储过程
st.execute();
对于这种代码较简单的脚本,还可以直接把集算器代码写在调用集算器JDBC的Java程序中,而不必专门编写集算器脚本文件(test.dfx):
String where="CLIENT==\"PWQ\"||ORDERDATE&=date()&& SELLERID==18 ";
String resultpath="D:/file/orders_result.xls ";
String sourcepath=" D:/file/orders.xls";
ResultSet set =st.executeQuery("=file(\""+resultpath+"\").exportxls@t(file(\""+sourcepath+"\").importxls@t().select("+where+"))");
这段Java代码直接调用了集算器的一句脚本:从Excel文件中取得数据,并按照指定的条件过滤。结果集写入结果Excel文件。
用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒是比较通用比较稳定,但又存在操作麻烦,无法程序化处理多个文件的问题.提取xml也是个办法,但步骤太多代码太复杂,令人望而生畏.用剪贴板转换也不好 ...
这篇文章主要介绍了Windows中使用Java生成Excel文件并插入图片的方法,其中向Excel中插入图片文中通过使用Apache POI来实现,需要的朋友可以参考下生成简单的Excel文件 在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开.在实习中有这样一个需求.根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载. ...
在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有帮助.
在开始进行Java读写Excel前,我们需要先下一个jxl的jar包,这个jar包中提供了相关读写Excel的方法,在百度里所 ...
在android平台如何把数据导入到excel文件中,以便方便查看数据呢?我知道的方法有三种:方法1,不借助第3方插件,按照excel中空格键和table键的分布来写文件,把文件后缀名写为.方法2,借助第三方插件,如一个叫做IPO的插件:方法3,借助第三方插件,如一个叫作JIX的插件.昨天本人用的是第三种方法,现在记录下来,以便不时之需:step1: ...
一.写入 Excel 文件: /** * * &p&Discription:[写入Excel]&/p& * @param fileName * @param list * @author:[LJ] * @update:[] [LJ][创建] */ public static void writeExcel(String ...Java读取Excel文件内容的简单实例
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Java读取Excel文件内容的简单实例,有需要的朋友可以参考一下
借助于apathe的,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可
本例使用java来读取excel的内容并展出出结果,代码如下:
代码如下:import java.io.BufferedInputSimport java.io.Fimport java.io.FileInputSimport java.io.FileNotFoundEimport java.io.IOEimport java.text.DecimalFimport java.text.SimpleDateFimport java.util.ArrayLimport java.util.Aimport java.util.Dimport java.util.Limport org.apache.poi.hssf.usermodel.HSSFCimport org.apache.poi.hssf.usermodel.HSSFDateUimport org.apache.poi.hssf.usermodel.HSSFRimport org.apache.poi.hssf.usermodel.HSSFSimport org.apache.poi.hssf.usermodel.HSSFWimport org.apache.poi.poifs.filesystem.POIFSFileSpublic class ExcelOperate {&&& public static void main(String[] args) throws Exception {&&&&&& File file = new File("ExcelDemo.xls");&&&&&& String[][] result = getData(file, 1);&&&&&& int rowLength = result.&&&&&& for(int i=0;i&rowLi++) {&&&&&&&&&& for(int j=0;j&result[i].j++) {&&&&&&&&&&&&& System.out.print(result[i][j]+"\t\t");&&&&&&&&&& }&&&&&&&&&& System.out.println();&&&&&& }&&& }&&& /**&&&& * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行&&&& * @param file 读取数据的源Excel&&&& * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1&&&& * @return 读出的Excel中数据的内容&&&& * @throws FileNotFoundException&&&& * @throws IOException&&&& */&&& public static String[][] getData(File file, int ignoreRows)&&&&&&&&&& throws FileNotFoundException, IOException {&&&&&& List&String[]& result = new ArrayList&String[]&();&&&&&& int rowSize = 0;&&&&&& BufferedInputStream in = new BufferedInputStream(new FileInputStream(&&&&&&&&&&&&& file));&&&&&& // 打开HSSFWorkbook&&&&&& POIFSFileSystem fs = new POIFSFileSystem(in);&&&&&& HSSFWorkbook wb = new HSSFWorkbook(fs);&&&&&& HSSFCell cell =&&&&&& for (int sheetIndex = 0; sheetIndex & wb.getNumberOfSheets(); sheetIndex++) {&&&&&&&&&& HSSFSheet st = wb.getSheetAt(sheetIndex);&&&&&&&&&& // 第一行为标题,不取&&&&&&&&&& for (int rowIndex = ignoreR rowIndex &= st.getLastRowNum(); rowIndex++) {&&&&&&&&&&&&& HSSFRow row = st.getRow(rowIndex);&&&&&&&&&&&&& if (row == null) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&& int tempRowSize = row.getLastCellNum() + 1;&&&&&&&&&&&&& if (tempRowSize & rowSize) {&&&&&&&&&&&&&&&&& rowSize = tempRowS&&&&&&&&&&&&& }&&&&&&&&&&&&& String[] values = new String[rowSize];&&&&&&&&&&&&& Arrays.fill(values, "");&&&&&&&&&&&&& boolean hasValue =&&&&&&&&&&&&& for (short columnIndex = 0; columnIndex &= row.getLastCellNum(); columnIndex++) {&&&&&&&&&&&&&&&&& String value = "";&&&&&&&&&&&&&&&&& cell = row.getCell(columnIndex);&&&&&&&&&&&&&&&&& if (cell != null) {&&&&&&&&&&&&&&&&&&&& // 注意:一定要设成这个,否则可能会出现乱码&&&&&&&&&&&&&&&&&&&& cell.setEncoding(HSSFCell.ENCODING_UTF_16);&&&&&&&&&&&&&&&&&&&& switch (cell.getCellType()) {&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_STRING:&&&&&&&&&&&&&&&&&&&&&&&& value = cell.getStringCellValue();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_NUMERIC:&&&&&&&&&&&&&&&&&&&&&&&& if (HSSFDateUtil.isCellDateFormatted(cell)) {&&&&&&&&&&&&&&&&&&&&&&&&&&& Date date = cell.getDateCellValue();&&&&&&&&&&&&&&&&&&&&&&&&&&& if (date != null) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& value = new SimpleDateFormat("yyyy-MM-dd")&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .format(date);&&&&&&&&&&&&&&&&&&&&&&&&&&& } else {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& value = "";&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&& } else {&&&&&&&&&&&&&&&&&&&&&&&&&&& value = new DecimalFormat("0").format(cell&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .getNumericCellValue());&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_FORMULA:&&&&&&&&&&&&&&&&&&&&&&&& // 导入时如果为公式生成的数据则无值&&&&&&&&&&&&&&&&&&&&&&&& if (!cell.getStringCellValue().equals("")) {&&&&&&&&&&&&&&&&&&&&&&&&&&& value = cell.getStringCellValue();&&&&&&&&&&&&&&&&&&&&&&&& } else {&&&&&&&&&&&&&&&&&&&&&&&&&&& value = cell.getNumericCellValue() + "";&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_BLANK:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_ERROR:&&&&&&&&&&&&&&&&&&&&&&&& value = "";&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case HSSFCell.CELL_TYPE_BOOLEAN:&&&&&&&&&&&&&&&&&&&&&&&& value = (cell.getBooleanCellValue() == true ? "Y"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& : "N");&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&&&&&&&&&&&& value = "";&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&& if (columnIndex == 0 && value.trim().equals("")) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&& values[columnIndex] = rightTrim(value);&&&&&&&&&&&&&&&&& hasValue =&&&&&&&&&&&&& }&&&&&&&&&&&&& if (hasValue) {&&&&&&&&&&&&&&&&& result.add(values);&&&&&&&&&&&&& }&&&&&&&&&& }&&&&&& }&&&&&& in.close();&&&&&& String[][] returnArray = new String[result.size()][rowSize];&&&&&& for (int i = 0; i & returnArray. i++) {&&&&&&&&&& returnArray[i] = (String[]) result.get(i);&&&&&& }&&&&&& return returnA&&& }&&& /**&&&& * 去掉字符串右边的空格&&&& * @param str 要处理的字符串&&&& * @return 处理后的字符串&&&& */&&&& public static String rightTrim(String str) {&&&&&& if (str == null) {&&&&&&&&&& return "";&&&&&& }&&&&&& int length = str.length();&&&&&& for (int i = length - 1; i &= 0; i--) {&&&&&&&&&& if (str.charAt(i) != 0x20) {&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&& length--;&&&&&& }&&&&&& return str.substring(0, length);&&& }}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 java从excel读取数据 的文章

 

随机推荐