- 浏览: 133475 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (118)
- 2014_Java (11)
- 2014_Java Web (25)
- Ext专栏 (7)
- HTML相对路径(Relative Path)和绝对路径(Absolute Path) (1)
- 开发工具 (3)
- 最新的Adobe Dreamweaver CS5序列号,Adobe Photoshop cs5 (1)
- HTML (3)
- JAVASCRIPT (3)
- oracle (12)
- jQuery (1)
- DOM (1)
- EL和JSTL (1)
- Discuz (1)
- 面试总结 (1)
- 网络编程 (1)
- javaweb_struts1 (0)
- webservices (5)
- weblogic (2)
- java.net.ProtocolException: Didn't meet stated Content-Length (0)
- wrote: '0' bytes instead of stated: '47789' bytes (0)
- httpclient (0)
- eclipse (1)
- dblink (0)
- EJB (0)
- 传智播客java学习 (2)
- 前台界面效果 (1)
- 生活 (0)
- linux (2)
- 开源软件 (3)
- 开发技术系列 (3)
- mssql2000 (1)
- mysql (4)
- jdbc (1)
- struts (0)
- 开发帮助 (0)
- runtime modeler error: Wrapper class org.zttc.service.jaxws.Add is not found. Have you run APT to generate them? (1)
- MyBatis (0)
- JSON (1)
- 账号 (0)
- Quartz (4)
- 系统安装 (1)
- 电脑基础 (1)
- Hibernate (5)
- 圆通快递专栏 (1)
- openoffice专栏 (1)
- 多线程 (1)
- 1 (0)
- 生活感悟 (1)
最新评论
-
pktangshao:
不错.效果挺好的.
前台界面效果----div弹出层,后面变色不可编辑 -
星尘pxj:
大神,我也出现了这样的问题,能将jar包传我一下吗
java.lang.NoSuchMethodError: org.apache.commons.fileupload.servlet.ServletFileUp -
springsen:
非常感谢,按照这个方法,现在已经解决了
webservice
上班的时候公司要求做一个从网页上导入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>标记,而不要使用第三方视图开源框架的form标记,例如不要使用strut的<htm:form>。
2、在<form>的属性里必须加上 ENCTYPE="multipart/form-data"
<h1>导入Excel</h1>
<hr>
<form action="importExcel" method="post" enctype="multipart/form-data">
<input type="file" name="importExcel" id="importExcel">
<input type="submit" value="导入">
</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<cell.length; j++) {
//getCell(列,行)
out.print(sheet.getCell(j, i).getContents());
out.print(" ");
}
out.println("<br/>");
}
//关闭文件
book.close();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结:上面只是一个很简单的导入excel文件的例子,如果想做完善还得下更多的功夫。在做的过程中如果出现Workbook打不开,请更换jxl版本,尽量用低版本,这样与jdk兼容会好点,我在做这个导入excel的时候,就遇到了版本兼容问题,处理了半天才发现问题所在。所以想做这个例子给大家参考,以后不要犯和我同样的错误。O(∩_∩)O哈哈~
思路很简单:
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>标记,而不要使用第三方视图开源框架的form标记,例如不要使用strut的<htm:form>。
2、在<form>的属性里必须加上 ENCTYPE="multipart/form-data"
<h1>导入Excel</h1>
<hr>
<form action="importExcel" method="post" enctype="multipart/form-data">
<input type="file" name="importExcel" id="importExcel">
<input type="submit" value="导入">
</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<cell.length; j++) {
//getCell(列,行)
out.print(sheet.getCell(j, i).getContents());
out.print(" ");
}
out.println("<br/>");
}
//关闭文件
book.close();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结:上面只是一个很简单的导入excel文件的例子,如果想做完善还得下更多的功夫。在做的过程中如果出现Workbook打不开,请更换jxl版本,尽量用低版本,这样与jdk兼容会好点,我在做这个导入excel的时候,就遇到了版本兼容问题,处理了半天才发现问题所在。所以想做这个例子给大家参考,以后不要犯和我同样的错误。O(∩_∩)O哈哈~
发表评论
-
escape,encodeURI,encodeURIComponent
2013-06-27 09:25 714js对文字进行编码涉及3个函数:escape,encodeUR ... -
JSP—传统标签TagSupport和BodyTagSupport类的生命周期和方法
2013-06-26 14:37 857一、传统标签的开发 1、 在开发传统标签之前,需 ... -
jsp自定义标签的执行流程
2013-03-19 21:26 7231、客户端访问jsp页面,遇到自定义的标签; 2、初始化自 ... -
BufferedReader和BufferedWriter
2012-08-21 19:49 834java.io.BufferedReader与java.io ... -
struts1标签的使用文档资料
2012-08-12 23:12 698http://www.doc88.com/p-90698758 ... -
JspWriter和PrintWriter的区别
2012-08-12 23:00 821JspWriter out = pageContext.get ... -
Struts1 标签库 说明
2012-08-12 22:40 807Struts提供了五个标签库,即:HTML、Bean、Logi ... -
Structs - HTML、Bean、Logic、Template和Nested标签库总结、心得和使用详
2012-08-12 22:33 3015标签库 说明 HTML 标签 ... -
weblogic.utils.NestedRuntimeException: Cannot parse POST parameters of request:
2012-08-02 18:14 5441http://xzhsht.blog.163.com/blog ... -
String index out of range: -1
2012-08-02 17:53 1125前两天报字符串越界, ... -
WebLogic如何设置session超时时间(转) .
2012-08-01 17:18 1014WebLogic如何设置session超时 ... -
集群的概念
2012-08-01 15:42 804首先 还的理解概念 1:域:说穿了就是一个区域,范围,域 ... -
Weblogic 10.3集群配置及session共享(上)
2012-07-31 09:45 6767http://hi.baidu.com/water_1 ... -
配置WebLogic Server集群
2012-07-24 17:07 2505配置WebLogic Server集群 (本文讲 ... -
java.lang.NoSuchMethodError: org.apache.commons.fileupload.servlet.ServletFileUp
2012-07-17 18:16 1379遇到问题:java.lang.NoSuchMethod ... -
ie直接打开pdf、图片
2012-07-10 23:45 0http://zyc1006.iteye.com/blog/8 ... -
java生成、读取、修改Excel示例
2012-07-06 18:03 1457生成Excel的类: public static v ... -
JSP自定义标签开发流程
2012-07-03 09:55 654、概述 jsp(SUN企业级应用的首选)中有一块重要 ... -
cookie和session
2012-04-15 11:46 760javax.servlet.http.Cookie有两个比较重 ... -
两种包含的区别
2012-04-15 11:43 791静态包含:先包含后处理 <%@include file= ...
相关推荐
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
在Java编程环境中,实现Excel数据的导入是一项常见的任务,尤其在数据处理、报表生成或数据分析等领域。Apache POI是一个流行的库,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。本篇...
用Java实现的Excel的导入导出,简洁明了,高质量代码。
总结起来,Java实现Excel中插入图片的核心步骤包括:导入Apache POI库,创建并操作工作簿和工作表,读取和创建图片对象,创建绘图工作表,设置图片位置,最后保存工作簿。在实际开发中,可能还需要处理图片格式转换...
此代码为java运用poi3.8插件实现运用模版导入导出复杂excel
在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据导入导出、数据分析或者报表生成等场景。Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(....
Java 实现 Excel 导入导出 Java 是一种流行的编程语言,Excel 是一种常用的电子表格软件。在 Java 中,实现 Excel 导入导出可以使用多种方式,本文将介绍使用 JXL 和 POI 两个库实现 Excel 导入导出的方法。 使用 ...
在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...
在Java中,实现Excel数据导入到数据库的步骤如下: 1. **读取Excel文件**:使用POI的`XSSFWorkbook`(针对.xlsx文件)或`HSSFWorkbook`(针对.xls文件)类打开Excel文件,然后通过`Sheet`和`Row`对象遍历并获取数据...
Java、SpringBoot实现对Excel内容的读取并将Excel内容导入到数据库中(后端篇)
java jxl 通过excel模板创建新文件并将数据导入excel,实现按行、列插入数据
Java 实现 Excel 导入导出是指使用 Java 语言编写程序来实现将 Excel 文件中的数据导入到 Java 程序中,并将 Java 程序中的数据导出到 Excel 文件中。这种操作可以使用 Apache POI 库来实现。 POI 库简介 Apache ...
本项目提供的"Java导入excel"示例是一个完整的Java工程,它利用了Apache POI库来实现这一功能。Apache POI是Java平台上的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。 首先...
自定义的一个excel文件导入导出类,支持Excel2003到2010的格式。里面也有简单的配置文件的创建。
本文将详细介绍如何利用Java实现从Excel批量导入数据到MySQL数据库。 首先,我们需要了解两个关键的库:Apache POI 和 JDBC。Apache POI 是一个开源的Java库,用于读写Microsoft Office格式的文件,包括Excel。JDBC...
java实现对Excel的读取,并保存到数据库中!代码简洁有注释!!!
用java实现清除excel内容之间空行方法,需要导入poi插件。
Java实现从excel中批量高效导入数据到数据库中,包括图片的导入存储,读取图片显示在jsp页面等,需要下载JspSmartUpload.jar和jxl.jar两个jar包,将两个包导入项目才能运行
综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。