在web应用程序的开发中,如果需要将Excel文档中的信息导入数据库或将数据库的信息导出到Excel文档中,需要应用程序访问Excel文件。目前,操作Excel文档的java组件主要有Jxl和POI两种。本篇博客主要讲通过Jxl对Excel的操作。

目录

1.读取Excel文档

2.写入Excel文档

3.修改已有的Excel文档

4.java实现Excel表格的数据导入与导出


1.读取Excel文档

读取电子表时需要用电子工作簿创建Workbook对象,然后基于Workbook对象获取工作簿的工作表,形成sheet对象,最后由sheet对象获取工作表的行、列,并根据行列值完成对工作表单元的读操作。

Workbook workbook=Workbook.getWorkbook(new File("d:/student.xls"));//位置随意填写
Sheet sheet=workbook.getSheet(0);//第一个工作表
int r=sheet.getRows();
int c=sheet.getColumns();
for(int i=0;i<r;i++){for(int j=0;j<c;j++){
//getCell方法第一个参数是列,第二个参数是行System.out.println(sheet.getCell(j,i).getCounts()+"");System.out.println("");}
}

2.写入Excel文档

写文档与读文档类似,写Excel文档时需要用电子工作簿创建Workbook对象,然后基于Workbook对象获取工作簿的工作表,形成sheet对象,在创建单元格并添加到sheet对象,最后将sheet对象写入Workbook对象中。

WritableWorkbook wwb=Workbook。createWorkbook(new File("位置"));
WritableSheet ws=wwb.createSheet("TESTSHEET1",0);
Label label=new Label(2,3,"abc");//3行4列
ws.addCell(label);
jxl.write.Number number=new jxl.write.Number(1,0,555.12541);
ws.addCell(number);
wwb.write();
wwb.close();

3.修改已有的Excel文档

修改已有的Excel文档

Workbook wb=Workbook.getWorkbook(new File("位置"));
WritableWorkbook book=Workbook.createWorkbook(new File("位置"),wb);//位置可相同,可不同
WritableSheet sheet=book.getSheet(0);
sheet.addCell(new Label(4,1,"ab"));
sheet.addCell(new Label(5,1,"cd"));
sheet.addCell(new Label(4,2,"eg"));
sheet.addCell(new Label(5,2,"gh"));
book.write();
book.close();

4.java实现Excel表格的数据导入与导出

导入功能:用户选择本地的Excel文件后将其上传到服务器,然后从服务器导入。

导出功能:先将数据库数据导入服务器,在下载到客户端。

Student.java--javabean组件

package bean;public class Student {
private String id;
private String name;
private String sex;
public Student(String id, String name, String sex) {super();this.id = id;this.name = name;this.sex = sex;
}
public Student() {super();// TODO Auto-generated constructor stub
}
public String getId() {return id;
}
public void setId(String id) {this.id = id;
}
public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public String getSex() {return sex;
}
public void setSex(String sex) {this.sex = sex;
}}

JdbcUtil.java--连接MySql

package bean;import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;public class JdbcUtil {private static String driver;private static String url;private static String user;private static String password;private static Properties pr=new Properties();public JdbcUtil(){super();}static {try {pr.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));driver=pr.getProperty("driver");url=pr.getProperty("url");user=pr.getProperty("user");password=pr.getProperty("password");try {Class.forName(driver);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static Connection getConnection() throws SQLException{return DriverManager.getConnection(url,user,password);}public static void free(Connection conn,Statement pstmt,ResultSet rs) throws Exception{if(conn!=null){conn.close();}if(pstmt!=null){pstmt.close();}if(rs!=null){rs.close();}}
}

db.properties--用来记录数据库的数据,用以JdbcUtil调用,与xml文件作用类似

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ccc?useUnicode=true&characterEncoding=UTF-8
user=root
password=2411030483

StudentDao.java--用以完成功能的书写

package bean;import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;public class StudentDao {public void exportToexcel(File excelpath,String condition) throws Exception{Connection conn=JdbcUtil.getConnection();String sql="select id,name,sex from student"+condition;PreparedStatement pstmt=conn.prepareStatement(sql);ResultSet rs=pstmt.executeQuery();WritableWorkbook wwb=Workbook.createWorkbook(excelpath);WritableSheet ws=wwb.createSheet("student", 0);String[] titles={"学号","姓名","性别"};int columnCount=titles.length;for(int i=0;i<columnCount;i++){ws.addCell(new Label(i,0,titles[i]));}int count=1;while(rs.next()){for(int j=0;j<columnCount;j++){ws.addCell(new Label(j,count,rs.getString(j+1)));}count++;}wwb.write();if(wwb!=null)wwb.close();JdbcUtil.free(conn, pstmt, rs);}public void importFromexcel(File excelpath,int sheetno) throws Exception{Connection conn=JdbcUtil.getConnection();String sql="insert into student(id,name,sex) values(?,?,?)";PreparedStatement pstmt=conn.prepareStatement(sql);Workbook workbook=Workbook.getWorkbook(excelpath);Sheet sheet=workbook.getSheet(sheetno-1);int r=sheet.getRows();int c=sheet.getColumns();for(int i=0;i<r;i++){for(int j=1;j<=c;j++){pstmt.setString(j,sheet.getCell(j-1,i).getContents().trim());}pstmt.addBatch();}pstmt.executeBatch();if(workbook!=null)workbook.close();JdbcUtil.free(conn, pstmt, null);}public List<Student> query()throws Exception{List<Student> studentList=new ArrayList<Student>();Connection conn=JdbcUtil.getConnection();String sql="select * from student";PreparedStatement pstmt=conn.prepareStatement(sql);ResultSet rs=pstmt.executeQuery();while(rs.next()){Student student=new Student();student.setId(rs.getString("id"));student.setName(rs.getString("name"));student.setSex(rs.getString("sex"));studentList.add(student);}JdbcUtil.free(conn, pstmt, rs);return studentList;}
}

Dao.java--servlet函数,用以完成最终功能调用

package bean;import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.ServletUtils;/*** Servlet implementation class Dao*/
@WebServlet("/daorucaochu")
public class Dao extends HttpServlet {private static final long serialVersionUID = 1L;/*** Default constructor.*/public Dao() {// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse*      response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubString action = request.getParameter("action");StudentDao studentdao = new StudentDao();String saveDirectory = this.getServletContext().getRealPath("/file");if ("daoru".equals(action)) {int maxPostSize = 5 * 1024 * 1024;MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "utf-8");File excelfile = multi.getFile("file1");if (excelfile != null) {try {studentdao.importFromexcel(excelfile, 1);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}response.setCharacterEncoding("UTF-8");response.sendRedirect("daorudaochu.jsp");} else if ("daochu".equals(action)) {String fileName = "student.xls";try {studentdao.exportToexcel(new File(saveDirectory + "/" + fileName), "");String isofilename = new String(fileName.getBytes("gbk"), "iso-8859-1");response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename=" + isofilename);ServletOutputStream out = null;out = response.getOutputStream();System.out.println(saveDirectory + "/" + fileName);ServletUtils.returnFile(saveDirectory + "/" + fileName, out);new File(saveDirectory + "/" + fileName).delete();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

daorudaochu.jsp--jsp页面,用以获取显示信息

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page import="bean.StudentDao,java.util.List,bean.Student"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>表格数据的导入和导出</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
StudentDao studentdao=new StudentDao();
List<Student> studentList=studentdao.query();
pageContext.setAttribute("studentList",studentList);
%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<table>
<tr><th>学号</th><th>姓名</th><th>性别</th></tr>
<c:forEach items="${studentList}" var="student">
<tr><td>${student.id}</td><td>${student.name}</td><td>${student.sex}</td></tr>
</c:forEach>
</table>
<form action="http://localhost:8080/java第十五周/daorucaochu?action=daoru" method="post" enctype="multipart/form-data">
<input type="file" name="file1"/>
<input type="submit" value="excel->mysql(导入)"/>
</form>
<a href="http://localhost:8080/java第十五周/daorucaochu?action=daochu">mysql->excel(导出)</a>
</body>
</html>

当将信息导入服务器时,数据库会获取Excel中的信息并将其加入到数据库,jsp页面信息也会更新,导出时Excel中的信息也会更新到与数据库一致。

Java web--利用java操作excel文档相关推荐

  1. VB中操作Excel文档

    ​​​​​​​篇一:利用 Python 操作 Excel文档 利用 Python 操作 Excel 在Excel 2010中打开VBA编辑器,请按 Alt + F11 打开: 以下代码在 Excel ...

  2. Java实战—POI操作Excel文档、读取、写入、合并单元格

    一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...

  3. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  4. 用python处理excel-使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  5. python xlwt xlrd_用xlrd和xlwt操作Excel文档

    工作当中经常要操作excel文档,有些完全是纯粹的重复劳动.在我的工作中就遇到这样一个需求: 1. 存在两个excel文档(source.xls/target.xls),列数据是一致的 2. 文档so ...

  6. 使用MFC自动化操作Excel文档

    使用MFC自动化操作Excel文档 项目中要用到MFC操作Excel文件,在网上搜的结果,有把Excel当数据库处理的,也有直接操作Excel的,最终在MSDN上看到的结果,测试后觉得好用些. 使用基 ...

  7. java后台利用模板生成Word文档提供前台下载

    2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...

  8. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求

    这次开任务使用的是EasyExcel导出Excel文档,但是在任务过程中,生成的文档的格式要求并不符合产品和测试的期望值,如图: 想着自己地位低下,也无能力反驳.只好硬着头皮查阅资料来达到他们的想要的 ...

  9. 利用python操作word文档

    总目录:Python数据分析整理 本文代码参考自官方文档: python-docx 使用的库下载方式为:pip install python-docx 注意!! 不是:pip install docx ...

最新文章

  1. IOS开发错误library not found for -lXXX
  2. AM消息中间件OA、ERP消息提醒的必要工具
  3. debian 开发版 移植_迅雷X Linux版(Debian系通用)
  4. html5 游戏学习
  5. xcode 不能读取键盘输入的汉字_C++:cin从控制台读取数据时的结束符
  6. 关于pycharm+opencv没有代码提示的问题解决方法记录
  7. R中读取包含中文字符的文件时这个诡异的错误你见过吗?
  8. Curl+Postman+Python,自动化构造测试数据
  9. LINUX下载编译zlib
  10. java 堆栈大小设置_如何增加Java堆栈大小?
  11. 【数据结构】(二叉树)计算二叉树的高度递归与非递归 三种方法 C语言
  12. win10锁屏c语言,怎样在Win10锁屏界面打开任意应用程序【图文教程】
  13. PS教程:磨砂颗粒质感字体海报设计
  14. 计算机少儿编程考级,少儿编程能力怎么评定?有什么考级可以参加?
  15. js数组查找最接近_js查找数组所有符合条件数据 js替换数组中的某个元素
  16. 微信小程序——校园服务小程序(二)校园论坛加预约理发服务
  17. ABBYY FineReader 15中文版
  18. 第八届中国高等院校设计作品大赛启动
  19. mysql table crashed_mysql Table Crashed
  20. SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 电商之14.0 Zookeeper 分布式锁实现原理

热门文章

  1. Linux ar命令说明
  2. 计算机网络与技术课本,高等学校计算机科学与技术教材:计算机网络基础教程...
  3. Lanczos方法计算严格对角化格林函数
  4. Notifiction
  5. 教程篇(6.4) 02. FortiOS架构 ❀ 企业防火墙 ❀ Fortinet 网络安全架构师 NSE7
  6. Linux中chown、chmod、chgrp的区别和用法
  7. 24西安电子科技大学953考研经验(涵盖各个阶段复习计划)
  8. Pro_07丨波动率因子3.0与斜率因子
  9. 身份证ocr的API接口,让身份证信息录入更快捷
  10. Redis:字符串SET、SETNX、SETEX、PSETEX、GET、GETSET命令介绍