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 导入功能的更多相关文章

  1. JS上传文件、导入文件

    //开始导入 function Import() { var filepath = $('#txtUpload').val(); //校验是否选择表格 if (filepath == '') { $( ...

  2. java实现sftp客户端上传文件夹的功能

    使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...

  3. springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)

    首先是导入jar包: web.xml: <servlet> <servlet-name>mvc-dispatcher</servlet-name> <serv ...

  4. HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理

    1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户 ...

  5. 上传文件multipart form-data boundary 说明

    含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,客户端发送内容构造. 概述              ...

  6. http 协议上传文件multipart form-data boundary 说明--转载

    原文地址:http://xixinfei.iteye.com/blog/2002017 含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协 ...

  7. mvc4 强大的导出和不需要上传文件的批量导入EXCEL--SNF快速开发平台3.1

    数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,但在Web上我们应该如何实现呢?本文主要介绍利用MVC4+EasyUI的特点,并结合文件上传控件,实现文 ...

  8. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  9. Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

    目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...

随机推荐

  1. 快乐学习 Ionic Framework+PhoneGap 手册1-2{介绍Header,Content,Footer的使用}

    *先运行第一个简单的APP,介绍Header,Content,Footer的使用 {2.1}运行一个简单的APP,效果如下 {2.2}Header代码 <ion-header-bar class ...

  2. 八、linux优化一

    1.关闭selinux sed –I ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config grep SELINUX=disable ...

  3. Linux基本常用命令

    说到Linux,它就是基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统.它能运行主要的UNIX的工具软件,应用程序和网络协议.它支持32位和64位硬件.linux继承Unix以 ...

  4. 算法总结之 构造数组MaxTree

    一个数组的MaxTree定义如下: 数组必须没有重复元素 MaxTree是一颗二叉树,数组的每一个值对应一个二叉树的节点 包括MaxTre树在内且在其中的每一颗子树上,值最大的节点都是树的头 给定一个 ...

  5. jsp路径问题

    绝对路径:/StudentInfo/images/login.jpg 相对路径:images/login.jpg 路径前面的第一个/代表tomcate目录下面的webapps这个文件夹 jsp的Adv ...

  6. python进阶02

    1.import导入模块 import sys sys.path:显示的是:从显示目录中查找要导入的模块文件. 程序执行时导入模块路径:sys.path.append('/home/itcast/xx ...

  7. mysql在表的某一位置增加一列的命令

    如果想在一个已经建好的表中添加一列,可以用诸如: alter table t1 add column addr varchar(20) not null; 这条语句会向已有的表t1中加入一列addr, ...

  8. Qt之密码框不可全选、复制、粘贴无右键菜单等

    转载---> http://blog.sina.com.cn/s/blog_a6fb6cc90101artk.html 在做用户登录界面的时候,往往会用到密码框,则其中的一些功能也要求与普通的输 ...

  9. Linux 解压压缩命令

    一.概述: 1.压缩命令: 命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2.解压缩命令: 命令格式:t ...

  10. LightOJ 1245 数学

    Harmonic Number (II) Description I was trying to solve problem '1234 - Harmonic Number', I wrote the ...