- 浏览: 141593 次
- 性别:
- 来自: 成都
文章分类
最新评论
最近由于项目的需要,必须使用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 3076因为最近要准备考试,找了些资料,觉得尤其这些是核心.和大家分享 ... -
Bootstrap, from Twitter
2012-07-16 16:29 1559前段时间,由于项目需要,(基于ios和android系统的大数 ... -
HTML5 type 新增的枚举值
2012-04-19 14:44 1329Keyword Data type h ... -
HTML5 标签Email等 (自动验证格式)
2012-04-19 14:28 12052谷歌Chrome浏览器。在Windows的【开始】--> ... -
javaScript向服务器请求的几种方式(转)
2012-04-19 09:07 3063javaScript javaScriptjavaScript ... -
Socket 类 客户端例子
2012-05-04 10:15 1246当客户程序需要和服务器通讯时,客户程序在客户机创 ... -
(转)java中四种XML解析技术
2011-12-29 14:27 1026在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前 ... -
转 JSTL标签使用
2011-12-02 09:37 1070JSTL 学习、应用记录 原来一直没有看过,我说过我是新手, ... -
java freemarker(xml模板) 导出word
2011-11-29 16:10 19459最近,由于项目的需要要导出规范样式的word文档,且要求较高。 ... -
FullCalendar 官方文档翻译(转)
2011-10-20 18:09 17721. 使用方式, 引入相关 ... -
(转载)FusionCharts参数的详细说明 中文乱码 字体大小
2011-10-20 17:53 5618功能特性animation ... -
转 jQuery 常用操作select、radio、checkbox
2011-09-28 10:57 1412jQuery获取Select选中的Text和Value(jqu ... -
java 持久化对象---hibernate核心接口
2011-09-28 10:50 1410Hibernate 核心接口 : Configurat ... -
Oracle 中like效率 正则表达式 浅析
2011-07-14 14:07 6400Oracle 中like常用但是其效率不是高。 特别是使用 ... -
编程命名规范(匈牙利命名法)C/C++
2011-07-08 16:09 2076变量属性 属性部分: 全局变量 g_ 常 ... -
JQuery 常用技巧 :jquery对象与dom对象的转换
2011-05-18 18:11 11941、关于页面元素的引用 ... -
JQuery 判断value选中checkbox 判断checkbox是否选中 修改、获取value值
2011-05-12 10:05 9817<html><head><scr ... -
setTimeout()/setInterval()
2011-04-19 13:19 1106JavaScript ******************** ...
相关推荐
本项目关注的是如何使用Java编程语言将数据库中的记录导出为CSV(Comma Separated Values)格式的文件。CSV因其通用性和易于处理的特性,被广泛应用于数据交换。 首先,让我们深入了解CSV文件格式。CSV是一种简单的...
本文将深入探讨如何在Java环境中读取Excel格式(.xls或.xlsx)以及CSV(逗号分隔值)格式的文件,同时也会提及所给的压缩包文件中的相关资源。 首先,Excel文件是一种由Microsoft Office提供的电子表格格式,用于...
Java读取CSV文件并导入数据库是很常见的一种数据导入方式,今天我们就来详细介绍这个过程。 为什么需要读取CSV文件并导入数据库? 在实际应用中,我们经常会遇到需要将数据从CSV文件中导入到数据库中的情况,例如...
本文将详细讲解如何使用Java来实现从CSV文件到SQL Server数据库的数据导入。 首先,我们需要理解CSV(Comma Separated Values)文件格式。它是一种通用的、轻量级的数据交换格式,以纯文本形式存储表格数据,每一行...
首先,我们需要将 Excel 文件另存为 CSV 文件,然后使用 phpMyAdmin 的导入功能将数据导入到数据库中。 优点:简单、快速,易于实现。 缺点:需要将 Excel 文件另存为 CSV 文件,并且 phpMyAdmin 的导入功能有一定...
本文将详细讲解如何将数据导入到Excel以及如何从Excel读取数据并导入到数据库,以实现高效的数据操作。 一、数据导入到Excel 1. 手动导入:最简单的方式是直接复制其他源(如文本文件、数据库表)中的数据,然后在...
本文将详细探讨如何将CSV、Excel和TXT等格式的文件数据导入到Oracle数据库中,以便进行高效的数据处理和分析。 一、CSV文件导入 CSV(Comma Separated Values)是一种通用的文本文件格式,用于存储表格数据。Oracle...
6. CSV格式:如果数据库支持,可以先将Excel数据保存为CSV(逗号分隔值)文件,因为CSV是一种通用的文本格式,大多数数据库都支持直接导入。 7. 数据库设计:在导入前,需要考虑数据库的表结构设计,确保Excel数据...
下面我们将详细探讨如何使用EasyExcel实现并发读取文件字段、进行数据校验、将数据写入新文件以及批量插入到数据库的操作。 1. **EasyExcel介绍** EasyExcel是一款轻量级的Java Excel处理框架,它基于NIO和内存...
- **IO流**:用于读取和写入文件,包括数据库的备份文件和CSV或Excel格式的数据文件。 2. **数据库连接与操作**: - **JDBC(Java Database Connectivity)**:Java标准API,用于与各种类型的数据库建立连接,...
在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。...例如,文件`BigdataTest.java`可能是实现上述功能的一个测试类,通过它我们可以模拟并测试导入Excel数据的多线程场景。
- 编程语言导入:编程语言如Python、Java、R都有相应的库支持CSV文件的读取,例如Python的pandas库可以轻松完成CSV文件的导入并进行数据分析。 3. CSV导出: - 数据库导出:数据库系统通常支持将表格数据导出为...
先打开Excel文件,将数据保存为CSV格式,然后在SQLite中使用`.import`命令或编程方式将CSV数据导入数据库。如果数据量较大,也可以先创建对应的表结构,然后逐行插入数据。 在实际应用中,可能还需要处理一些细节...
读取CSV文件是将这些数据导入到系统中的关键步骤,可以使用Java的内置库如OpenCSV或者Apache Commons CSV来实现。 Excel文件,通常以.xlsx或.xls为扩展名,是由Microsoft Excel创建的电子表格文件,用于存储和处理...
本项目利用了jxl库,一个广泛使用的Java库,来处理Excel文件,实现了从Excel到Vector对象的数据读取以及从Vector到Excel的数据写入功能。 1. **jxl库介绍** jxl库是Java处理Excel文件的一个开源库,支持读写...
例如,将大文件分割成小块,逐块导入Excel,以降低内存占用并提高处理速度。 3. **使用编程语言**:Java库如Apache POI或EasyExcel(对应压缩包中的millionsdataeasyexcel-demo)等,可以高效地处理大量数据。这些...
根据业务需求,你可以实现多个策略,比如CSV导入策略、数据库导入策略等。在实际应用中,通过配置文件或依赖注入选择合适的策略。 ```java public interface ImportStrategy { List<MyClass> importData...
本文将详细阐述如何轻松地将Excel的xls格式文件导入到Oracle数据库。 首先,理解Oracle数据库。Oracle是一种关系型数据库管理系统(RDBMS),它提供了丰富的数据存储、管理、查询和分析功能。在企业级应用中,...
在IT领域,将本地Excel文件导入到SQL数据库是一项常见的任务,尤其在数据分析、报表生成以及数据迁移等场景中。Excel的灵活性和易用性使其成为数据处理的首选工具,而SQL数据库则提供了强大的数据存储和查询能力。...
Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件入库的场景,大文本被拆分成多个线程处理,速度快。 批量插入MongoDB,存在则...