java读取excel文件(.xls,xlsx,csv)
前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系:
在<dependencies>中添加如下代码
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
1,页面标签及属性
input[type="button"]{background-color: #71BCF3;color: white;}
<form name="form" id="form" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="upload"style="display: none;"
onchange="document.form.path.value=this.value" multiple="multiple" accept=".xls,.xlsx,.csv" />
<input name="path" id="path" readonly>
<input type="button" value="医路通数据文件上传" onclick="document.form.upload.click()">
</form>
<input type="button" value="确定" onclick="readFile()">
function readFile(){
var f = document.getElementById("form");
f.action = "<%=request.getContextPath()%>/mcp/MedicalDate/readExls.action?";
f.submit();
}
特别注意 : (一),提交文件标签的数据,一定要用form的action提交,否则有数据缺失 (二),form标签中,必须要有 enctype="multipart/form-data"
2,后台用@RequestParam(value = "upload") MultipartFile upload接文件数据
@RequestMapping("/readExls")
public ModelAndView readExls(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "upload") MultipartFile upload) throws IOException
{
String oldFile = upload.getOriginalFilename();
String suffix = oldFile.substring(oldFile.lastIndexOf("."));
log.info("oldFile:"+oldFile);//文件名
log.info("suffix:"+suffix);//文件后缀
InputStream inStream = upload.getInputStream();//文件流,可直接用
}
3,解析xls后缀文件将数据转换成为List<MedicalWhiteListVO>,以便对数据操作
public List<MedicalWhiteListVO> readXls(InputStream inStream) throws IOException
{ InputStream is = inStream;
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); List<MedicalWhiteListVO> medicalWhiteListVOs = new ArrayList<MedicalWhiteListVO>();
MedicalWhiteListVO medicalvo = null; // Read the Sheet
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0); if (hssfSheet == null) {
//continue;
return medicalWhiteListVOs;
} int lastRowNum = hssfSheet.getLastRowNum(); // Read the Row
for (int rowNum = 1; rowNum <= lastRowNum; rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow != null) {
medicalvo = new MedicalWhiteListVO(); HSSFCell holderMobile = hssfRow.getCell(0);
HSSFCell holderRealName = hssfRow.getCell(1); HSSFCell holderBirthday = hssfRow.getCell(2);
HSSFCell policyApplyDate = hssfRow.getCell(3); medicalvo.setHolderMobile(getValue(holderMobile));
medicalvo.setHolderRealName(getValue(holderRealName)); try
{
medicalvo.setHolderBirthday(getDate(getValue(holderBirthday)));
medicalvo.setPolicyApplyDate(getDate(getValue(policyApplyDate)));
} catch (Exception e)
{
e.printStackTrace();
log.info("**日期格式转换异常*2222***");
} medicalWhiteListVOs.add(medicalvo);
}
}
return medicalWhiteListVOs;
}
public static Date getDate(String date) throws Exception{ Pattern pattern = Pattern.compile("^[0-9]*$");
Matcher matcher = pattern.matcher(date);
//判断是否可以转换成日期
if(StringUtils.isNullOrEmpty(date) || !matcher.matches()){
Date defaultDate = DateUtils.parse("1900-01-01");
System.out.println(DateUtils.format(defaultDate));
return defaultDate;
} Double str = Double.valueOf(date); int numday = (int) Math.round(str); Calendar d = Calendar.getInstance();
d.set(1900, 0, 1);
d.add(Calendar.DAY_OF_MONTH,numday); int year = d.get(Calendar.YEAR);
int month = d.get(Calendar.MONTH) + 1;
int day = d.get(Calendar.DAY_OF_MONTH)-2; String dateStr = year+"-"+month+"-"+day; Date newDate = DateUtils.parse(dateStr); System.out.println(DateUtils.format(newDate)); return newDate;
}
private static String getValue(HSSFCell hssfCell) { if(hssfCell==null){
return "";
} if (hssfCell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
return String.valueOf((int)hssfCell.getNumericCellValue());
}else {
return String.valueOf(hssfCell.getStringCellValue()==null?"":hssfCell.getStringCellValue());
}
}
4,解析xlsx后缀文件将数据转换成功List<MedicalWhiteListVO>,以便对数据操作
public static List<MedicalWhiteListVO> readXlsx(InputStream inStream) throws IOException
{
//InputStream is = new FileInputStream(path); InputStream is = inStream; XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); List<MedicalWhiteListVO> medicalWhiteListVOs = new ArrayList<MedicalWhiteListVO>();
MedicalWhiteListVO medicalvo = null; // Read the Sheet
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0); if (xssfSheet == null) {
return medicalWhiteListVOs;
} // Read the Row
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow != null) {
medicalvo = new MedicalWhiteListVO(); XSSFCell holderMobile = xssfRow.getCell(0);
XSSFCell holderRealName = xssfRow.getCell(1);
XSSFCell holderBirthday = xssfRow.getCell(2);
XSSFCell policyApplyDate = xssfRow.getCell(3); medicalvo.setHolderMobile(getValue(holderMobile));
medicalvo.setHolderRealName(getValue(holderRealName)); try
{
medicalvo.setHolderBirthday(getDate(getValue(holderBirthday)));
medicalvo.setPolicyApplyDate(getDate(getValue(policyApplyDate)));
} catch (Exception e)
{
e.printStackTrace();
log.info("**日期格式转换异常*2***");
}
medicalWhiteListVOs.add(medicalvo);
}
} return medicalWhiteListVOs;
}
private static String getValue(XSSFCell xssfRow) {
if(xssfRow==null){
return "";
}
if (xssfRow.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(xssfRow.getBooleanCellValue());
} else if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) {
return String.valueOf((int)xssfRow.getNumericCellValue());
}else {
return String.valueOf(xssfRow.getStringCellValue()==null?"":xssfRow.getStringCellValue());
}
}
public static Date getDate(String date) throws Exception{ Pattern pattern = Pattern.compile("^[0-9]*$");
Matcher matcher = pattern.matcher(date);
//判断是否可以转换成日期
if(StringUtils.isNullOrEmpty(date) || !matcher.matches()){
Date defaultDate = DateUtils.parse("1900-01-01");
System.out.println(DateUtils.format(defaultDate));
return defaultDate;
} Double str = Double.valueOf(date); int numday = (int) Math.round(str); Calendar d = Calendar.getInstance();
d.set(1900, 0, 1);
d.add(Calendar.DAY_OF_MONTH,numday); int year = d.get(Calendar.YEAR);
int month = d.get(Calendar.MONTH) + 1;
int day = d.get(Calendar.DAY_OF_MONTH)-2; String dateStr = year+"-"+month+"-"+day; Date newDate = DateUtils.parse(dateStr); System.out.println(DateUtils.format(newDate)); return newDate;
}
4,解析csv后缀文件将数据转换成功List<MedicalWhiteListVO>,以便对数据操作
public static List<MedicalWhiteListVO> readCsv(InputStream inStream) throws IOException
{
List<MedicalWhiteListVO> medicalWhiteListVOs = new ArrayList<MedicalWhiteListVO>();
MedicalWhiteListVO medicalvo = null; try {
//BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(path),"GBK")); BufferedReader reader=new BufferedReader(new InputStreamReader(inStream,"GBK"));
//换成你的文件名 reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
String line = null;
int num = 0;
while((line=reader.readLine())!=null){
num ++;
String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分 medicalvo = new MedicalWhiteListVO(); medicalvo.setHolderMobile(getValue(item,0));
medicalvo.setHolderRealName(getValue(item,1));
medicalvo.setHolderBirthday(getCsvDate(getValue(item,2)));
medicalvo.setPolicyApplyDate(getCsvDate(getValue(item,3)));
medicalWhiteListVOs.add(medicalvo); } Log.info("**一共行数**:"+num); } catch (Exception e) {
e.printStackTrace();
} return medicalWhiteListVOs;
}
public static String getValue(String[] item,int index){ if(item.length > index){
String value = item[index];
return value;
}
return "";
}
public static Date getCsvDate(String item) throws Exception{ if(item.indexOf("/") > 0){
item = item.replaceAll("/", "-");
}else if(item.indexOf("年") > 0){
item = item.replaceAll("年", "-").replaceAll("月", "-").replaceAll("日","");
} Date birth = DateUtils.parse(item);
Date defaultDate = DateUtils.parse("1900-01-01"); if(birth.getTime() <= defaultDate.getTime()){
return defaultDate;
}
return birth;
}
注意java通过poi编写excel文件,需要工程共引入的jar有:
dom4j-1.6.1.jar
poi-3.9.jar
poi-ooxml-3.9.jar
poi-ooxml-schemas-3.9.jar
xmlbeans-2.3.0.jar
xml-resolver-1.2.jar
xmlschema-core-2.0.2.jar
xstream-1.3.1.jar
this is all over,i hope it helpful for you ,3q~
java读取excel文件(.xls,xlsx,csv)的更多相关文章
- phpexcel读取excel的xls xlsx csv格式
我之前写过一篇PHP读取csv文件的内容 上代码index.php <?php /** * * @author XC * */ class Excel { public $currentShee ...
- 关于解决java读取excel文件遇空行抛空指针的问题 !
关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- java读取excel文件的代码
如下内容段是关于java读取excel文件的内容,应该能对各朋友有所用途. package com.zsmj.utilit; import java.io.FileInputStream;import ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- java读取excel文件数据导入mysql数据库
这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...
- JAVA 读取excel文件成List<Entity>
package com.fsinfo.common.utils; import com.fsinfo.modules.enterprise.entity.EnterpriseRecordEntity; ...
- java 读取excel文件(只读取xls文件)
package com.sun.test; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInpu ...
- java读取txt/pdf/xls/xlsx/doc/docx/ppt/pptx
环境准备txt利用common-iopdf利用pdfbox剩下的用POI关于POI,读取xls没啥特别的,主要是读取doc和ppt,需要下载poi源代码,然后将poi-src-3.7-20101029 ...
随机推荐
- Mac Terminal
一.简介 二.实用 1)update-apps-using-terminal-mac https://www.maketecheasier.com/update-apps-using-termin ...
- js call方法的使用
转自:js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg ...
- Ionic3--数据存储
1.使用sqlite cordova plugin add cordova-sqlite-storage --save npm install --save @ionic/storage (本地存储) ...
- image src base64 svg
1.显示img: 大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgA ...
- vue 中使用keepAlive状态保持
keepAlive状态保持 1 主要实现原理,状态保持的路由不会执行生命周期的钩子函数,只有第一次进入页面会执行钩子函数. 2 设置当前页面保持keepAlive 直接在路由meta中配置即可 m ...
- VirtualBox中安装Fedora9及其ARM开发环境配置
因为要学习Tiny4412开发板的嵌入式编程,需要用到Fedora9系统(和手册对应),我就在VirtualBox虚拟机(此虚拟机安装在Ubuntu12.04上)上安装了Fedora9,下面就讲解一下 ...
- read temperature
button1, button2, richtexbox1, serialport1, using System;using System.Collections.Generic;using Syst ...
- Maximum Size Subarray Sum Equals k LT325
Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If t ...
- robot framework 中should be true 与should contain 的区别
should be true 是否等于:判断是否should contain 是否包含 a是否包含b
- spring boot 启动自动跳到 断点 throw new SilentExitException
项目 debug 启动,自动跳到 断点 ,而且就算F8 ,项目还是停止启动. 百度了一下,答案都是 Eclipse -> Preferences ->Java ->Debug去掉&q ...