http://demo.gcpowertools.com.cn/spreadjs/exceliosample/exceliosample/

Java实现导入Excel:

1、做一个jsp页面,页面包括浏览文件,提交文件

2、将excel文件上传到服务器

3、  服务器对该excel文件进行读出

4、  将excel文件内容显示到页面上

环境搭建:

需要准备的包:commons-fileupload-1.2.1.jar & commons-io-1.3.2.jar 这两个包是上传用的

jxl.jar 这个包是读取excel用的 下载地址 :http://sourceforge.net/projects/jexcelapi/  建议不要用新版本,因为新版本会出现与jdk版本兼容问题,如果运行程序出现问题的时候请切换旧版本。

一、Jsp页面

注意:1、在jsp页面的form要使用html本身的

标记,而不要使用第三方视图开源框架的form标记,例如不要使用strut的。

   2、在

的属性里必须加上  ENCTYPE="multipart/form-data"

 <</SPAN>h1>导入Excel</</SPAN>h1>
 <</SPAN>hr>
 <</SPAN>form action="importExcel" method="post" enctype="multipart/form-data">
 <</SPAN>input type="file" name="importExcel" id="importExcel">
 <</SPAN>input type="submit" value="导入"> 
 </</SPAN>form>

二、上传excel的Servlet

注意:1、导入的excel最好用后缀为.xls,如果用.xlsx可能会导不进去。

2、在调用FileItem的write方法前必须保证文件的存放路径存在否则出现异常。commons fileupload不会自动为你建立不存在的目录。

3、上传后会对文件进行重命名,以时间为文件名进行命名

public class ImportExcelServlet extends HttpServlet {

//缓冲区域

File tempPathFile;

//默认路径

String uploadTo = "D:\\";

// 支持的文件类型

String[] errorType = { ".xls" };

//格式化日期

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding("utf-8");

resp.setCharacterEncoding("utf-8");

//取得服务器真实路径

uploadTo = req.getSession().getServletContext().getRealPath("\\") + "upload\\";

// Create a factory for disk-based file items

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置缓冲区大小,这里是4kb

factory.setSizeThreshold(4096);

// 设置缓冲区目录

factory.setRepository(tempPathFile);

// Create a new file upload handler

ServletFileUpload upload = new ServletFileUpload(factory);

// Set overall request size constraint

// 设置最大文件尺寸,这里是4MB

upload.setSizeMax(4*1024*1024);

// 开始读取上传信息

List fileItems = new ArrayList();

try {

fileItems = upload.parseRequest(req);

} catch (FileUploadException e1) {

e1.printStackTrace();

}

// 依次处理每个上传的文件

Iterator iter = fileItems.iterator();

System.out.println("fileItems的大小是" + fileItems.size());

// 正则匹配,过滤路径取文件名

String regExp = ".+\\\\(.+)$";

Pattern p = Pattern.compile(regExp);

while (iter.hasNext()) {

FileItem item = (FileItem) iter.next();

// 忽略其他不是文件域的所有表单信息

System.out.println("正在处理" + item.getFieldName());

if (!item.isFormField()) {

String name = item.getName();

long size = item.getSize();

if ((name == null || name.equals("")) && size == 0)

continue;

Matcher m = p.matcher(name);

boolean result = m.find();

if (result) {

boolean flag = false;

for (int temp = 0; temp < errorType.length; temp++) {

if(m.group(1).endsWith(errorType[temp])) {

flag = true;

}

}

if(!flag) {

System.out.println("上传了不支持的文件类型");

throw new IOException(name + ": wrong type");

}

try {

String fileName = uploadTo + format.format(new Date()) + m.group(1).substring(m.group(1).indexOf("."));

item.write(new File(fileName));

//调用ReadExcel类进行读出excel

ReadExcel.readExcel(fileName, resp.getWriter());

System.out.println(name + "\t\t" + size);

} catch (Exception e) {

e.printStackTrace();

}

}

} else {

// 这里添加对不是上传文件表单项的处理

System.out.println("这是一个表单项");

}

}

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doGet(req, resp);

}

@Override

public void init() throws ServletException {

tempPathFile = new File("d:\\temp\\buffer\\");

if (!tempPathFile.exists()) {

tempPathFile.mkdirs();

}

}

}

三、读出excel文件内容的类

public class ReadExcel {

public static void readExcel(String pathname, PrintWriter out) {

try {

//打开文件

Workbook book = Workbook.getWorkbook(new File(pathname)) ;

//取得第一个sheet

Sheet sheet = book.getSheet(0);

//取得行数

int rows = sheet.getRows();

for(int i = 0; i < rows; i++) {

Cell [] cell = sheet.getRow(i);

for(int j=0; j

//getCell(列,行)

out.print(sheet.getCell(j, i).getContents());

out.print(" ");

}

out.println("
");

}

//关闭文件

book.close();

} catch (BiffException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

总结:上面只是一个很简单的导入excel文件的例子,如果想做完善还得下更多的功夫。在做的过程中如果出现Workbook打不开,请更换jxl版本,尽量用低版本,这样与jdk兼容会好点

JSP导入EXCEL样式的更多相关文章

  1. servlet+jsp导入Excel到mysql数据库

    package khservlet; import java.io.FileInputStream;import java.io.IOException;import java.io.InputStr ...

  2. jsp struts2导入excel并且存储到数据库中

    开发中遇到一个问题: 需要从外部导入excel,拿到其中的数据然后保存到数据库中. 1.先在jsp端使用input进行上传: <form action="storeOBDexcel&q ...

  3. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  4. 报表工具如何实现多次导入Excel

    很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...

  5. 导入excel数据到数据库

    1.上传excel到服务器 jsp页面代码 <form action="actionname" method="post" id="form1& ...

  6. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

  7. 纳税服务系统【用户模块之使用POI导入excel、导出excel】

    前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...

  8. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  9. java实现导入excel功能

    实现功能: 1.Excel模板下载 2.导入excel 一.jsp效果和代码 <form id="uploadForm" target="frameFile&quo ...

随机推荐

  1. Docker简明教程(以安装wget程序为例)

    本文计划: 一.安装Docker(Centos) 二.注册Docker官网帐号 三.下载基础centos镜像,安装需要的软件和环境后,push到自己的repository 一.安装Docker(Cen ...

  2. 关于调试日志Log

    __VA_ARGS__  是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的作用在于,当可变参数的个数为0时,这里的## ...

  3. HRV基础

    Source: Mostly from wiki. Heart rate variability (HRV,心率变异性) is the physiological phenomenon of vari ...

  4. Html5 Egret游戏开发 成语大挑战(九)设置界面和声音管理

    在上一篇中,简单的使用界面元素快速实现了一个游戏中的二级页面,这种直接在游戏页面上做UI的做法并不太好,原因是,UI会让游戏的压力变大,即使它是隐蔽的,如果同样的功能在其它的地方也是一样的,那么就要写 ...

  5. 【转】如何利用logrotate工具自动切分滚动中的日志文件

    FROM : http://www.2cto.com/os/201503/381812.html 在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或da ...

  6. 如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

    weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里声明引用该libary即可,这样可大大减 ...

  7. win7下给右键菜单添加启动cmd命令

    win7下给右键菜单添加启动cmd命令 (2013-07-20 19:20:56) 转载▼ 标签: it 右键 cmd 分类: 小软件操作技巧     最近编辑器在用windows下的gvim,但进入 ...

  8. [MetaHook] Find a function signature

    Find a non-public function signature, we need a tool "IDA Pro" ( You can open picture in a ...

  9. python中from module import * 的一个陷阱

    from module import *把module中的成员全部导到了当前的global namespace,访问起来就比较方便了.当然,python style一般不建议这么做,因为可能引起nam ...

  10. FineUI小技巧(2)将表单内全部字段禁用、只读、设置无效标识

    需求描述 对表单内的所有字段进行操作也是常见需求,这些操作有: 禁用:表单字段变灰,不响应用户动作. 只读:表单字段不变灰,但不接受用户输入(实际上是设置DOM节点的readonly属性),有触发器的 ...