- 浏览: 139170 次
- 性别:
- 来自: 成都
文章分类
最新评论
最近由于项目的需要,必须使用Excel导入数据。
经过一翻查找,确定了思路: 首先从客户端将文件上传到服务器,再有服务器读取,最后通过方法写入数据库。(更早的时候尝试过,在客户端获取文件的绝对路径,传传到 服务器端直接读取写入数据库。事实证明这种做法是不可取的。首先必须得很纠结得去获取路径,最关键是服务器是无法直接去操作客户端的文件。)在这之前的一个Flex项目中曾经写过WORD导出数据,那个时候也是分为两步,首先将文件导出到服务器端得文 件夹,再通过Flex所有的下载组件下载到客户端。
上传时使用插件:commons-fileupload-1.2.jar
读取Excel文件使用插件:jxl.jar
上传页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script type="text/javascript">
$(function() {
$('#custom_file_upload').uploadify({
'uploader' : 'map/js/jquery.uploadify-v2.1.4/uploadify.swf',
'script' : 'servlet/PlateTypeServlet',//所调用的servlet
'cancelImg' : 'map/js/jquery.uploadify-v2.1.4/cancel.png',
// 'folder' : '/uploads',
//'fileDataName' : 'uploadify',
'multi' : false,
'auto' : false,
'fileExt' : '*.jpg;*.csv;*.xls',
'fileDesc' : 'Image Files (.csv,.xls)',
'queueID' : 'custom-queue',
'queueSizeLimit' : 1,
'simUploadLimit' : 1,
'buttonText': 'browse',
'removeCompleted': true,
'sizeLimit': 512000,
'onSelectOnce' : function(event,data) {
$('#status-message').text(data.filesSelected + ' 份文件等待上传……');
},
//'onComplete' : function(evt, queueID, fileObj, response, data){
// $("#backImage").append("<div>"+response+"</div>");
// },
'onAllComplete' : function(event,data) {
$('#status-message').text(data.filesUploaded + ' 份文件已经上传, ' + data.errors + ' 错误.');
getPlatec(1);
}
});
});
</script>
<style type="text/css">
#plan_ly_custom-queue {
border: 1px solid #E5E5E5;
height: 20px;
margin-bottom: 10px;
width: 280px;
}
</style>
</head>
<body>
<form id="plateinfo" method="post" enctype="multipart/form-data">
<table width="600" border="0" align="center" cellpadding="0" cellspacing="1" class="f12">
<tr>
<td>
<table width="95%" border="0" align="center" cellpadding="5" cellspacing="0" class="f12">
<tr>
<td width="90" align="left" valign="bottom">EXCEL 内部数据样式:</td>
</tr>
</table>
<table id="" width="93%" border="0" id="unit2" align="center" cellpadding="3" cellspacing="1" bgcolor="#B7BABC" class="f12">
<tr>
<td align="center" bgcolor="#FFE6BF" class="f12"><strong>类型编码</strong></td>
<td align="center" bgcolor="#FFE6BF" class="f12"><strong>车牌类别</strong></td>
<td align="center" bgcolor="#FFE6BF" class="f12"><strong>类型备注</strong>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF" class="" style="cursor:pointer" onclick="" title="">
<input name="" type="text" value="" size="22" />
</td>
<td align="center" bgcolor="#FFFFFF" class="" title="">
<input name="" type="text" value="" size="22" /> </td>
<td align="center" bgcolor="#FFFFFF">
<input name="" type="text" value="" size="22" /> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF" class="" style="cursor:pointer" onclick="" title="">
<input name="" type="text" value="" size="22" />
</td>
<td align="center" bgcolor="#FFFFFF" class="" title="">
<input name="" type="text" value="" size="22" /> </td>
<td align="center" bgcolor="#FFFFFF">
<input name="" type="text" value="" size="22" /> </td>
</tr>
</table>
<table width="95%" border="0" align="center" cellpadding="2" cellspacing="0" class="f12">
<tr>
<td>
<div id="status-message">选择文件上传:</div>
<div id="custom-queue"></div>
<input id="custom_file_upload" type="hidden"/>
</td>
</tr>
</table>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" class="f12">
<tr>
<td height="40" align="right" valign="middle">
<img src="bayonet_images/right_34.gif" width="70" onclick="javascript:jQuery('#custom_file_upload').uploadifyUpload()" height="22" border="0" />
<img src="bayonet_images/right_15.gif" width="70" onclick="close_plateinfo()" height="22" border="0" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
所 调用servlet :
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void service (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html");
DiskFileItemFactory fac = new DiskFileItemFactory();
PrintWriter out = response.getWriter();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
IPlateColorService Service = (IPlateColorService)SpringContext.getBean(IPlateColorService.class);
List fileList = null;//Spring 中使用注解后实例化service接口
try {
fileList = upload.parseRequest(request); //获取 附件数据
} catch (FileUploadException ex) {
return;
}
Iterator<FileItem> it = fileList.iterator();
String uploadPath = null;
String filename = ""; //id
ServletContext sc= this.getServletContext();
uploadPath = sc.getRealPath("/");
uploadPath += "bayonet_file\\excel\\";
//System.out.println(uploadPath);
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
File file=new File(uploadPath);
filename = item.getName();
if(!file.exists()){
file.mkdir();
}
try {
item.write(new File(uploadPath+filename));
} catch (Exception e) {
e.printStackTrace();
}
}
out.print(true);
}
String filePath = uploadPath+filename;
//System.out.println("==="+filePath);
try {
Service.addExcel(filePath);//调用service方法。
} catch (Exception e) {
e.printStackTrace();
}
所调用的service方法:
public void addExcel(String filepath){
JxlRead jr= new JxlRead();
try{
jr.readExcel(filepath);
}catch(Exception e){
e.printStackTrace();
}
}
读取Excel 类并且调用方法写入:
public class JxlRead {
public void readExcel(String filePath) throws Exception {
InputStream is = null;
Workbook workbook = null;
try {
is = new FileInputStream(filePath);
workbook = Workbook.getWorkbook(is);
// sheet row column 下标都是从0开始的
Sheet sheet = workbook.getSheet(0);
int column = sheet.getColumns();
int row = sheet.getRows();
System.out.println("共有" + row + "行," + column + "列数据");
plateType pt= new plateType();
IPlateTypeService pts = (IPlateTypeService)SpringContext.getBean(IPlateTypeService.class);
for(int i=1;i<row;i++){
for(int j=0;j<column;j++){
if(j==0){
Cell cellA1 = sheet.getCell(0, i);
pt.setTbpt_id(cellA1.getContents());
}
if(j==0){
Cell cellA1 = sheet.getCell(1, i);
pt.setTbpt_name(cellA1.getContents());
}
if(j==0){
Cell cellA1 = sheet.getCell(2, i);
pt.setTbpt_memo(cellA1.getContents());
}
}
pts.addEntity(pt);
}
// A1是字符
//Cell cellA1 = sheet.getCell(0, 0);
// System.out.println("A1 type:" + cellA1.getType());
// if (cellA1.getType().equals(CellType.LABEL)) {
// System.out.println("A1 content:" + cellA1.getContents());
// }
// 操作完成时,关闭对象,释放占用的内存空间
workbook.close();
is.close();
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (is != null) {
is.close();
}
}
}
/**
* @param args
* @throws Exception
*/
// public static void main(String[] args) throws Exception {
// String filePath = "D:\\test\\testjxlread.xls";
// JxlRead jxlRead = new JxlRead();
// jxlRead.readExcel(filePath);
// }
}
- jxl.jar (708.7 KB)
- 下载次数: 82
- commons-fileupload-1.2.jar (51.8 KB)
- 下载次数: 53
发表评论
-
信息系统项目管理师-九大知识域浅析
2012-10-15 10:15 2974因为最近要准备考试,找了些资料,觉得尤其这些是核心.和大家分享 ... -
Bootstrap, from Twitter
2012-07-16 16:29 1517前段时间,由于项目需要,(基于ios和android系统的大数 ... -
HTML5 type 新增的枚举值
2012-04-19 14:44 1283Keyword Data type h ... -
HTML5 标签Email等 (自动验证格式)
2012-04-19 14:28 11986谷歌Chrome浏览器。在Windows的【开始】--> ... -
javaScript向服务器请求的几种方式(转)
2012-04-19 09:07 3016javaScript javaScriptjavaScript ... -
Socket 类 客户端例子
2012-05-04 10:15 1170当客户程序需要和服务器通讯时,客户程序在客户机创 ... -
(转)java中四种XML解析技术
2011-12-29 14:27 976在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前 ... -
转 JSTL标签使用
2011-12-02 09:37 1021JSTL 学习、应用记录 原来一直没有看过,我说过我是新手, ... -
java freemarker(xml模板) 导出word
2011-11-29 16:10 19379最近,由于项目的需要要导出规范样式的word文档,且要求较高。 ... -
FullCalendar 官方文档翻译(转)
2011-10-20 18:09 16561. 使用方式, 引入相关 ... -
(转载)FusionCharts参数的详细说明 中文乱码 字体大小
2011-10-20 17:53 5568功能特性animation ... -
转 jQuery 常用操作select、radio、checkbox
2011-09-28 10:57 1368jQuery获取Select选中的Text和Value(jqu ... -
java 持久化对象---hibernate核心接口
2011-09-28 10:50 1361Hibernate 核心接口 : Configurat ... -
Oracle 中like效率 正则表达式 浅析
2011-07-14 14:07 6333Oracle 中like常用但是其效率不是高。 特别是使用 ... -
编程命名规范(匈牙利命名法)C/C++
2011-07-08 16:09 2013变量属性 属性部分: 全局变量 g_ 常 ... -
JQuery 常用技巧 :jquery对象与dom对象的转换
2011-05-18 18:11 11151、关于页面元素的引用 ... -
JQuery 判断value选中checkbox 判断checkbox是否选中 修改、获取value值
2011-05-12 10:05 9756<html><head><scr ... -
setTimeout()/setInterval()
2011-04-19 13:19 1061JavaScript ******************** ...
相关推荐
本人以JAVA来实现以支付宝的账单表为例,实现JAVA读取CSV..csv是一种文件格式(如.txt、.doc等),也可理解.csv文件就是一种特殊格式的纯文本文件。即是一组字符序列,字符之间已英文字符的逗号或制表符(Tab)分隔。
NULL 博文链接:https://qq-24665727.iteye.com/blog/2339850
全网首发!CSV文件导入MySQL数据库工具软件 CSVtoDB v1.0.zip 因手头项目...本人暂时先将EXCEL人力转出CSV文件,然后通过本工具,读取CSV,从而间接实现了EXCEL导入数据库。 后面将开发多种导入方式,敬请朋友们期待。
这是一个用java编译的将数据库的记录导出为csv文件的程序
有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候。 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Server确实有这个功能。 ...
文件中包括读取excel、csv文件,同时可以将读取出的文件内容保存在另外一个excel或csv中。注意excel2003和excel2007调用的jar包也不一样,需要将代码进行修改。2007版的将HSSF改成XSSF,2003相反。csv文件用XSSF
java 导入Excel 文件,兼容Excel 2003(后缀名:xls)及 2007(后缀名:xlsx)的文件,同时还支持csv格式的文件
扫描csv文件的数据到数据库中 java源代码
java实现批量excel转csv,其中csv文件为utf-8格式,支持直接导入数据库。
Java读取excel,Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作。
java实现将xls或者xlsx文件转成csv文件
可读取复杂的csv文件,根据引号和逗号等分割读取所需要的数据信息。
读取Excel格式CSV格式文件
利用Java swing 对csv和excel文件进行读写;并且可以同时读取5个文件的数量;通过关键字配置来读文件,还有就是通过POI CSVWriter等类的使用来对excel和csv等文件进行操作
java使用jdbc将数据库数据导出到csv文件
在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的
//C# 读取Excel文件、C#读取xls文件、C#读取xlsx文件、C#读取csv文件 //C# 将xls文件转换为DataTable、C#将xlsx文件转换为DataTable //C#将csv文件转换为DataTable //C#将txt文件转换为DataTable(列与列之间空格隔...
读取与创建CSV文件,根据第三方jar包自动解析文件编码方式,相关jar包与使用说明
下载javacsv-2.0.jar ,根据例子进行读写CSV操作。