Workbook 工作簿
Sheet 每页表格的页名
Row 行
Cell 单元格HSSFWorkbook 生成以 .xls 结尾的文件,比较老了  对应的 Sheet 实现类为HSSFSheet
XSSFWorkbook .xlsx 可以存万条以内的数据
SXSSFWorkbook .xlsx 104万多条

第一种

通过原生 jdbc 查询数据库,
org.apache.poi包 即第三方组件处理 Excel 表格,
通过 IO 流,下载到本地

import java.sql.*;
import org.apache.poi.ss.usermodel.*;//Workbook Sheet Row Cell
import org.apache.poi.xssf.usermodel.*;//XSSFWorkbook
import java.io.*;//把数据库下的所有表和数据导出到Excel表中
public class Exec1{public static void main(String args[])throws Exception{//~~~~~~~~~内存中构造一个空的Workbook对象Workbook wb = new XSSFWorkbook();//通过 show tables 语句获取该数据库下的所有表名Connection con = getConnection();String selectTable="show tables";PreparedStatement pst = con.prepareStatement(selectTable);//结果集只有一列,其列名为 Tables_in_数据库名字,其下的值为各个表名ResultSet tables = pst.executeQuery();while(tables.next()){//拿取结果集的第一列数据,即各个表名String tableName = tables.getString(1);//~~~~~~~~~创建sheet,表名赋值给页名Sheet sheet = wb.createSheet(tableName);//拿取表中的所有数据String sql="select * from "+tableName;pst = con.prepareStatement(sql);ResultSet data = pst.executeQuery();//拿取该表的元数据ResultSetMetaData rsmd = data.getMetaData();//列数int count = rsmd.getColumnCount();//~~~~~~~~~创建表头行Row header = sheet.createRow(0);for(int i=1;i<=count;i++){//~~~~~~~~~创建表头行的单元格Cell cell = header.createCell(i-1);//~~~~~~~~~添加内容,即表的字段名cell.setCellValue(rsmd.getColumnName(i));}//~~~~~~~~~因为表头行已经被用来添加字段名,这里从第二行开始添加int k=1;while(data.next()){//~~~~~~~~~创建一行Row data_row = sheet.createRow(k++);for(int i=1;i<=count;i++){//获取列名字String cName = rsmd.getColumnName(i);//获取列内容String cValue = data.getString(cName);//~~~~~~~~~在该行创建单元格Cell cell = data_row.createCell(i-1);//~~~~~~~~~单元格添加内容cell.setCellValue(cValue);}}data.close();}pst.close();con.close();OutputStream os = new FileOutputStream(new File("execl.xlsx"));//~~~~~~~~~输出文件到指定目录wb.write(os);wb.close();}private static Connection getConnection()throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","");return con;}
}

第二种

导入 org.apache.poi 坐标依赖

    <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14</version></dependency>

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(value = "/stu")
public class StudentServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.export2Excel(req,resp);}protected void export2Excel(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{//拿取数据List<Student> data = service.queryData();//把查询到的数据 写出到excel//1.WorkbookWorkbook wb = new XSSFWorkbook();Sheet sheet = wb.createSheet("学生信息列表");//2.SheetRow row = sheet.createRow(0);row.createCell(0).setCellValue("序号");row.createCell(1).setCellValue("名字");row.createCell(2).setCellValue("年龄");row.createCell(3).setCellValue("生日");row.createCell(4).setCellValue("邮箱");//3.Rowint k = 1;for (Student d : data){Row dataRow = sheet.createRow(k++);dataRow.createCell(0).setCellValue(k-1);dataRow.createCell(1).setCellValue(d.getName());dataRow.createCell(2).setCellValue(d.getAge());dataRow.createCell(3).setCellValue(d.getBirth());dataRow.createCell(4).setCellValue(d.getEmail());}//设置响应表头,用户可从浏览器下载该文件到本地resp.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("学生列表","utf-8")+".xlsx");OutputStream os = resp.getOutputStream();wb.write(os);wb.close();}
}

上面是通过mybatis拿取的数据,如果要通过mybatis拿取表的字段名和数据类型,如下

1、只拿字段名

 List<String> querySheet();
    <select id="querySheet" resultType="string">select DISTINCT COLUMN_NAME from information_schema.COLUMNS where table_name = 'student2'</select>

2、字段名和数据类型

    List<Map<String,String>> querySheet();

如果对键名 没要求,可以不用 resultMap 接收,用 resultType=“map” 即可

    <resultMap id="sheet_Map" type="HashMap"><result property="COLUMN_NAME" column="COLUMN_NAME"/><result property="DATA_TYPE" column="DATA_TYPE"/></resultMap><select id="querySheet" resultMap="sheet_Map">select DISTINCT COLUMN_NAME,DATA_TYPE from information_schema.COLUMNS where table_name = 'student2'</select>

导出 Excel 表格相关推荐

  1. elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格

    安装 npm install --save xlsx file-saver 两个插件的详细地址在下面 https://github.com/SheetJS/js-xlsx https://github ...

  2. 使用NPOI将数据库里信息导出Excel表格并提示用户下载

    使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 1 //mvc项目可以传多个id以逗号相隔的字符串2 public ActionRes ...

  3. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  4. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......

    PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...

  5. java 导出excel教程_Java导出Excel表格

    Java导出Excel表格 导出Excel表格需要一个poi-3.9.jar的包,该包在网上可以找到. 第一步,创建Excel对象. HSSFWorkbook workbook = new HSSFW ...

  6. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  7. 使用python将数据导出excel表格

      python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法.   导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...

  8. java代码实现导出Excel表格、工具ssm框架、maven、idea

    第一步.导入依赖 <!--生成excel文件--><dependency><groupId>org.apache.poi</groupId><ar ...

  9. java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...

    非异步方法 /** * 使用Java导出Excel表格并由浏览器直接下载--基于POI框架 * * @param response * @return * @throws IllegalAccessE ...

  10. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)...

    最近生成Excel表格,稍微得到一点新的体会,特此更新自己开发时候的版本. 开发工具:VS2005 数据库:oracle10.1 浏览器:firefox3.5.9 第一步,web层aspx文件 需要载 ...

最新文章

  1. iOS_Development~ 添加 / 隐藏 UITabBar 右上角的小红点
  2. 如何在ubuntu上安装nvidia-docker同时与宿主共享GPU cuda加速
  3. Jsp实现停车场管理系统
  4. libtorch 调用pytorch模型
  5. 数据库3(DBUtils)
  6. python pysnmp使用
  7. 用一个小球揭开地球的面纱,探索地球运转的秘密!
  8. 数学不好,如何转行人工智能?
  9. 移动站原生的select实现省市区联动选择
  10. iPhone 13 Pro原型机曝光:全新玫瑰金配色,女性首选
  11. JSON Funcs
  12. 乐迪机器人正确操作_乐迪智能早教机器人好用吗 乐迪智能早教机器人使用测评...
  13. Unity 粒子特效(Particle System)大小自适应和层级的一些问题
  14. 【C++学习五】STL库的应用
  15. 成年人夜生活的自救! 华熙LIVE·五棵松放大招
  16. Android 修改wifi阀值,6种简单方法使WiFi网络提速
  17. c语言邻接表的普里姆算法,图的遍历和生成树求解实现(邻接矩阵、邻接表 —图的深度广度遍历算法的实现和最小生成树PRIM和KRU...
  18. BLOCKCHAINS VS. DISTRIBUTED DATABASES: DICHOTOMYAND FUSION
  19. python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)cmd复制文件命令使用
  20. Yii Criteria

热门文章

  1. 19 分布式缓存集群的伸缩性设计
  2. 程序员分享:最近面试 Java 后端开发的感受
  3. word文档另存为pdf格式,如何设置导航栏
  4. python定义一个人类_Python类和人类
  5. 命令式和声明式,哪个才是你的菜
  6. 重磅:微信官方推出 Web 前端和小程序统一框架
  7. 一个正项级数收敛, 它的平方也收敛吗?
  8. 数字后端基本概念介绍Blockage Link
  9. Itest(爱测试),最懂测试人的开源测试管理, 开源BUG跟踪管理软件隆重发布
  10. C语言精练教程:连载中