项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单。

基本的思路:

把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数据存到list中,通过遍历list,得到map,存到数据库中。

首先导入jar包:在网上都有,

代码:

页面:

新模excel导入<input type="file" name="excel" id="xinmu">
<input type="button" id="newmj" value="导入">

js

//通过ajax进行操作
$(function(){
$("#newmj").click(function(){
alert("haha");
$.ajax({
url:'${pageContext.request.contextPath}/UploadExcelServlet?type=xinmu&filename='+$("#xinmu").val(),
type:'get',
success:function(result){
//alert("haha");
alert(result);
var json= eval('(' + result + ')');
              }
})
})
});

servlet

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request.setCharacterEncoding("utf-8");
System.out.println("jinru");
String type=request.getParameter("type");
String filename=request.getParameter("filename");
//System.out.println(filename);
File file = new File("D:\\"+filename);// 表格存储的位置
JSONObject jsonObject = new JSONObject();
//记录一下文件是否存在
if (file.exists()) {
jsonObject.put("exist", "文件存在");
List<Map<String, String>>list=ReadExcel.readExcel(file);
MuJUService mjService = new MuJUService();
for (Map<String, String> map : list) {
jsonObject = mjService.addNewMuJu(map);
} } else {
jsonObject.put("exist", "文件不存在");
System.out.println("文件不存在");
} }

jxl处理类

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook; public class ReadExcel { public static List<Map<String,String>> readExcel(File file){
List<Map<String, String>>list =new ArrayList<Map<String,String>>();
try {
// 判断文件是否存在
// 创建工作簿
Workbook workbook = Workbook.getWorkbook(file);
// 获得第一个工作表sheet1
Sheet sheet = workbook.getSheet(0);
// 获得数据
for (int i = 1; i < sheet.getRows(); i++) {// sheet.getRows():获得表格文件行数
Map<String, String>map = new HashMap<String, String>();
for (int j = 0; j < sheet.getColumns(); j++) {// sheet.getColumns():获得表格文件列数
Cell cell = sheet.getCell(j, i);
// System.out.print(cell.getContents() + " ");
map.put(sheet.getCell(j,0).getContents(), cell.getContents());
//(列,行)
}
//System.out.println("");// 换行
list.add(map);
}
//调用方法进行数据库的操作
//.......
System.out.println(list);
workbook.close();// 关闭
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}

如此就能完成了,但是值得注意的是,我现在写的这段代码,无法自由选择文件路径进行读取,excel必须放在固定盘里。excel后缀必须是.xls,所以wps的excel不可用,而且文件名字不可以是中文。

服务器项目:http://www.cnblogs.com/stepbystepwhx/p/7782872.html

Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)的更多相关文章

  1. Java web项目 Jxl 读取excel 并保存到数据库,(从eclipse上移动到tomact服务器上,之路径更改,)

    最开始在eclipse中测试的时候,并没有上传到服务器上,后来发现,想要读取数据必须上传服务器然后把文件删除就可以了,服务器不可以直接读取外地的文件.用到jxl 1.上传到服务器 前端 <for ...

  2. POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)

    今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...

  3. Java通过jxl读取Excel

    package com.hd.all.test.testjava; import java.io.File; import java.io.IOException; import java.util. ...

  4. JAVA利用jxl读取Excel内容

    JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. import java.io.File; import java.io.FileInp ...

  5. java中使用jxl读取excel中的数据

    package bboss; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...

  6. 利用jxl读取excel合并的单元格的一个小样例

    工作中我们可能要把Excel文件的记录保存到数据库, 今天我用jxl读取Excel文件时遇到了合并格的问题,记录例如以下: 如Excel文件例如以下: watermark/2/text/aHR0cDo ...

  7. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  8. Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决

    Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决 引言: 在Java中 ...

  9. ASP.NET Core 如何记录每次响应的Response信息 - sky 胡萝卜星星 - CSDN博客

    原文:ASP.NET Core 如何记录每次响应的Response信息 - sky 胡萝卜星星 - CSDN博客 上一篇文章中我们已经成功的记录了Request部分的信息,现在我们来看下如何记录Res ...

随机推荐

  1. solr之functionQuery(函数查询)【转】

    函数查询 让我们可以利用 numeric域的值 或者 与域相关的的某个特定的值的函数,来对文档进行评分. 怎样使用函数查询 这里主要有两种方法可以使用函数查询,这两种方法都是通过solr http 接 ...

  2. Html+Ajax+Webservice 实现文件跨域上传

    1. 界面HTML <p >上传文件: <input id="zfiles" type="file" name="file" ...

  3. H5移动端实现图片上传

    转至 :https://blog.csdn.net/qq_37610423/article/details/84319410 效果图: 我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我 ...

  4. poj2187 Beauty Contest (凸包 + 旋转卡壳)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 38349   Accepted: 11851 ...

  5. kettle学习笔记(三)— 定时任务的脚本执行

    kettle-定时任务 Kettle 的定时任务可以用kettle中的job工作来定时转换(缺点窗口不可关闭),同时也可以使用bat脚本来启动kettle的 '.ktr'转换. 注:这里对定时任务的时 ...

  6. 封装是java面向对象编程三大特征之一。 简单的属性封装

    package com.cqvie.Hello; class Person { private int age; private String name; public void tell() {   ...

  7. drf Serializer使用

    drf序列化 在前后端不分离的项目中,可以使用Django自带的forms组件进行数据验证,也可以使用Django自带的序列化组件对模型表数据进行序列化. 那么在前后端分离的项目中,drf也提供了数据 ...

  8. G1摘要

    G1 启动参数示例 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+PrintTenuringDistribution -XX:+UseG1 ...

  9. Navicat连接Mysql8.0.17出现1251错误 / 或者Navicat Premium出现2059错误

    Navicat连接Mysql8.0.17出现1251错误 重装了电脑之后,好多软件出了问题,经过一系列的插件安装,mysql终于安装好了 但是Navicat又抽筋了~~~额(⊙o⊙)... 在网上查的 ...

  10. npm的使用说明

    博主是刚开始写项目的前端小白菜,边学边整理,以供后面的小猿参考,共同进步. 首先: npm的官网地址:https://www.npmjs.com Windows 安装包(.msi) 32 位安装包下载 ...