上传文件csv 导入功能
HTML代码:
<script>
function uploadCsv() {
$('#chooseCsvFile').click();
}
function doUploadCsv() {
$('#uploadCsvForm').submit();
}
</script> <input id="btnImport" type="button" onclick="uploadCsv();" value=" 导 入 CSV ">
<form id="uploadCsvForm" class="hidden" action="${ctx!}/biz/client/imports${suffix}?type=0" method="post" enctype="multipart/form-data">
<input id="chooseCsvFile" type="file" name="csvFile" onchange="doUploadCsv();" />
</form>
工具类:
可以将csv Excel文件等转换成list集合。(此工具类无任何依赖)
package com.shengmu.resource.finance.util; import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* Created by wangrenhui on 15/4/2.
*/
public class CSVParser {
private File file;
private List<List<String>> resultList = new ArrayList<List<String>>();
private static Pattern pattern = Pattern
.compile(",?\"([^\"]*(\"{2}[^\"]*\"{2}[^\"]*)*)\",?"); public static void main(String[] args) {
CSVParser parser = new CSVParser(CSVParser.class.getClassLoader().getResource("test.csv").getFile());
List<List<String>> list = parser.parse();
print(list);
} public CSVParser(File file) {
this.file = file;
} public CSVParser(String filePath) {
file = new File(filePath);
} private static void print(List<List<String>> list) {
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i).toString() + " Length: "
+ list.get(i).size());
} public List<List<String>> parse() {
try {
BufferedReader br = getReader();
String line = "";
while ((line = br.readLine()) != null) {
line = handleSpecial(line);
String[] elements = line.split(",");
revert(elements);
store(elements);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return resultList;
} /**
* Revert to original ',' if contains '|', precondition is that each
* original Field of the line doesn't contain this char
*
* @param elements
*/
private void revert(String[] elements) {
for (int i = 0; i < elements.length; i++)
elements[i] = elements[i].replace("|", ",");
} private void store(String[] elements) {
resultList.add(Arrays.asList(elements));
} private BufferedReader getReader() {
BufferedReader br = null;
try {
//br = new BufferedReader(new InputStreamReader(new FileInputStream(
// file), Charset.forName("GB18030")));// ISO-8859-1,GB18030
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return br;
} /**
* Handling special characters for each given line.
*
* @param inputLine
* @return
*/
private String handleSpecial(String inputLine) {
if (inputLine == null || inputLine.trim().length() == 0)
return "";
Matcher m = getMatcher(inputLine);
String after = "";
while (m.find()) {
after = m.group(2);
String before = after;
System.out.println("Before: " + before);
if (after.contains(","))
// use '|' to replace ',' for later splitting of each field of
// the line,this '|' needs to be revert to ',' after the whole line being
// split
after = after.replace(',', '|');
if (after.contains("\"\""))
after = after.replace("\"\"", "\"");
System.out.println("After:" + after);
inputLine = inputLine.replace(before, after);
} return inputLine;
} private static Matcher getMatcher(String sequence) {
return pattern.matcher(sequence);
} }
action代码:
调用工具类。
public void imports() {
UploadFile csvFile = getFile("csvFile");//因为用的是jfinal框架 直接获取页面传来的文件
File ff=csvFile.getFile(); //获取文件
CSVParser parser=new CSVParser(ff);//将文件传给工具类
List<List<String>> list = parser.parse();//调用, 解析之后返回list集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
文件里的内容如果有汉字解析后转换成list集合里汉字会变成乱码,, 还没解决 ╮(╯▽╰)╭
上传文件csv 导入功能的更多相关文章
- JS上传文件、导入文件
//开始导入 function Import() { var filepath = $('#txtUpload').val(); //校验是否选择表格 if (filepath == '') { $( ...
- java实现sftp客户端上传文件夹的功能
使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...
- springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)
首先是导入jar包: web.xml: <servlet> <servlet-name>mvc-dispatcher</servlet-name> <serv ...
- HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理
1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户 ...
- 上传文件multipart form-data boundary 说明
含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,客户端发送内容构造. 概述 ...
- http 协议上传文件multipart form-data boundary 说明--转载
原文地址:http://xixinfei.iteye.com/blog/2002017 含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协 ...
- mvc4 强大的导出和不需要上传文件的批量导入EXCEL--SNF快速开发平台3.1
数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,但在Web上我们应该如何实现呢?本文主要介绍利用MVC4+EasyUI的特点,并结合文件上传控件,实现文 ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...
随机推荐
- 3.6《深入理解计算机系统》笔记(四)虚拟存储器,malloc,垃圾回收【插图】
概述 ●我们电脑上运行的程序都是使用虚拟存储,跟物理内存根本不搭边. ●既然虚拟内存是在磁盘上的,为什么它又运行这么好,并没有感觉卡顿?这要感谢程序的局部性! ●虚拟存储器的调度是一个操作系统必须做好 ...
- iOS_核心动画CALayer(一)
目 录: 一.核心动画简介 二.图层与视图之间的关系 三.CALayer的使用说明 四.CALayer的隐式动画属性 五.在CALayer上绘图 六.总结 一.核心动画简介 Core Anim ...
- Vue.js学习笔记 第三篇 条件渲染
条件选择 条件选择的用法和其他语言类似,一个例子就能解决所有问题 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- maven junit.framework不存在问题解决
问题 在使用maven进行一个工程的编译,已加入junit包的依赖,编译的时候却总是报“junit.framework不存在”错误. pom.xml中junit包加入如下: <dependenc ...
- java-Object类中的方法
1.Object类中有哪些方法? protected Object clone():创建一个返回此对象的副本 boolean equals(Obejct obj):只是其他对象与此对象是否相等 p ...
- js正则表达式验证(化繁为简)
以前用js写正则表达式验证,每一个文本框后面都要添加一个onblur函数,验证的信息少,也没体会到有多繁琐,这次项目中的页面比较多,页面中的信息也比较多,如果每个文本框都加一个验证函数的话,js验证代 ...
- Excel 如何复制粘贴一整行
在某些时候,我们需要重复性的录入一些信息,而且表头都是一样的,一直拉列宽是相当令人烦躁的事情. 所以,就想可以直接复制黏贴出一整行,包括行的各个列宽. 具体操作如图: ——>首先,一整行复制, ...
- ubuntu12.04 错误:phonon: No such file or directory; phonon模块的安装
http://blog.csdn.net/xsl1990/article/details/9009919 错误:phonon: No such file or directory 1)sudo ap ...
- 在虚拟机里安装ubuntu
1.下载ubuntu镜像文件 https://mirrors.aliyun.com/ubuntu-releases/17.04/ubuntu-17.04-desktop-amd64.iso 2.创建虚 ...
- AVFoundation之录音及播放
录音 在开始录音前,要把会话方式设置成AVAudioSessionCategoryPlayAndRecord //设置为播放和录音状态,以便可以在录制完之后播放录音 AVAudioSession *s ...