package com.hxkr.util;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Workbook; /**
*
* @author 陈欢
* @Date 2019年3月7日
* 数据库导出数据到Excel
*
*/
public class ExportUtil { public static void main(String[] args) {
List<HashMap<String, Object>> professionField = testField();
System.out.println(professionField);
List<HashMap<String, Object>> professionMsg = testData();
System.out.println(professionMsg);
export("C:\\Users\\Administrator\\Desktop\\export.xls", "sheet","测试标题",professionField,professionMsg);
} /**
* 测试字段
* @return
*/
private static List<HashMap<String, Object>> testField(){
HashMap<String, Object> hashMap = new HashMap<>();
HashMap<String, Object> hashMap1 = new HashMap<>();
List<HashMap<String, Object>> professionField = new ArrayList<>();
hashMap.put("field_guid", "5657a72d-4270-46a6-a635-78b09f267f78");
hashMap.put("name", "专业名称");
hashMap.put("state", "yes");
professionField.add(hashMap);
hashMap1.put("field_guid", "b111fabd-9752-4ca6-9ac1-84e0ef175c50");
hashMap1.put("name", "专业代码");
hashMap1.put("state", "yes");
professionField.add(hashMap1);
return professionField;
}
/**
* 测试字段
* @return
*/
private static List<HashMap<String, Object>> testData(){
HashMap<String, Object> hashMap = new HashMap<>();
HashMap<String, Object> hashMap1 = new HashMap<>();
List<HashMap<String, Object>> professionField = new ArrayList<>();
hashMap.put("5657a72d-4270-46a6-a635-78b09f267f78", "生物学");
hashMap.put("b111fabd-9752-4ca6-9ac1-84e0ef175c50", "1010101");
professionField.add(hashMap);
hashMap1.put("5657a72d-4270-46a6-a635-78b09f267f78", "物理学");
hashMap1.put("b111fabd-9752-4ca6-9ac1-84e0ef175c50", "2020202");
professionField.add(hashMap1);
return professionField;
}
/**
* 生成一个Excel
* @param address    文件存放地址
* @param sheetName   工作表名称
* @param headerName     标题名称
* @param professionField   表头字段数据源
* @param professionMsg   表数据数据源
*
*
*/
public static void export(String address,String sheetName,String headerName,List<HashMap<String, Object>> professionField,List<HashMap<String, Object>> professionMsg){
HSSFWorkbook workbook = new HSSFWorkbook();//创建一个Excel文件
HSSFSheet sheet = workbook.createSheet(sheetName);//创建一个工作表
setTop(workbook, sheet, headerName,headerDataList(professionField).size()-1);//设置标题
setheader(workbook, sheet, professionField);//设置表头字段
setData(workbook, sheet, professionField,professionMsg);//设置数据
try {
FileOutputStream out = new FileOutputStream(address);
workbook.write(out);
out.close();
System.out.println("完成");
} catch (Exception e) {
e.printStackTrace();
} } /**
* 设置标题
* @param workbook
* @param sheet
* @param topContent 标题名称
*/
public static void setTop(HSSFWorkbook workbook,HSSFSheet sheet,String topContent,Integer num) {
HSSFRow row = sheet.createRow((int) 0); //创建第一行
HSSFCell cell = row.createCell((short) 0); //创建第一列
/**
* CellRangeAddress(firstRow, lastRow, firstCol, lastCol)
* firstRow 区域中第一个单元格的行号
lastRow 区域中最后一个单元格的行号
firstCol 区域中第一个单元格的列号
lastCol 区域中最后一个单元格的列号
*/
CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,num);
sheet.addMergedRegion(cellRangeAddress);
row.setHeightInPoints((short)40);//行高
cell.setCellStyle(topStyle(workbook));//设置样式
cell.setCellValue(topContent);
}
/**
* 设置标题字体
* @param wb
* @return
*/
private static CellStyle topStyle(Workbook wb){
CellStyle cellStyle=wb.createCellStyle();
// 设置字体
Font font = wb.createFont();
font.setFontName("微软雅黑");//字体类型
font.setFontHeightInPoints((short) 20);// 字号
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
font.setColor(HSSFColor.RED.index);//设置字体颜色
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
return cellStyle;
} /**
* 设置表头字段
* @param workbook
* @param sheet
* @param professionMsg 数据源
*/
public static void setheader(HSSFWorkbook workbook,HSSFSheet sheet,List<HashMap<String, Object>> professionMsg) {
HSSFRow row = sheet.createRow((int) 2); //创建第三行
row.setHeightInPoints((short)25);//行高
List<String> headerDataList = headerDataList(professionMsg);
for (int i = 0; i < headerDataList.size(); i++) {
sheet.setColumnWidth(i, headerDataList.get(i).toString().getBytes().length*256+1500);
HSSFCell cell = row.createCell((short) i); //创建每一列
cell.setCellStyle(headerStyle(workbook,HSSFColor.LIGHT_GREEN.index));
cell.setCellValue(headerDataList.get(i));//每一列赋值
}
} /**
* 设置表头字段样式
* @param wb
* @param color 前景色下标
* @return
*/
private static CellStyle headerStyle(Workbook wb,short color){
CellStyle cellStyle=wb.createCellStyle();
// 设置字体
Font font = wb.createFont();
font.setFontName("微软雅黑");//字体类型
font.setFontHeightInPoints((short) 14);// 字号
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
font.setColor(HSSFColor.BLACK.index);//设置字体颜色
cellStyle.setFont(font);
cellStyle.setWrapText(true);//自动换行
cellStyle.setFillForegroundColor(color); // 前景色
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
borderStyle(cellStyle, IndexedColors.BLACK.getIndex());
return cellStyle;
} /**
* 边框颜色
* @param wb
* @param color 颜色代码
* @return
*/
private static void borderStyle(CellStyle cellStyle,short color){
/**
* CellStyle.BORDER_THIN 实线
* CellStyle.BORDER_MEDIUM_DASHED 虚线
*/
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 底部边框
cellStyle.setBottomBorderColor(color); // 底部边框颜色
cellStyle.setBorderLeft(CellStyle.BORDER_THIN); // 左边边框
cellStyle.setLeftBorderColor(color); // 左边边框颜色
cellStyle.setBorderRight(CellStyle.BORDER_THIN); // 右边边框
cellStyle.setRightBorderColor(color); // 右边边框颜色
cellStyle.setBorderTop(CellStyle.BORDER_THIN); // 上边边框
cellStyle.setTopBorderColor(color); // 上边边框颜色 } /**
* 获取所有的表头字段
* @param professionMsg 数据源
* @return 所有的表头字段
*/
public static List<String> headerDataList(List<HashMap<String, Object>> professionMsg){
List<String> list = new ArrayList<>();
for (HashMap<String, Object> hashMap : professionMsg) {
String state = hashMap.get("state").toString();
String fieldName = hashMap.get("name").toString();
if(!"del".equals(state) && !"no".equals(state) && !"简介".equals(fieldName) && !"专业所属大类".equals(fieldName)){
list.add(fieldName);
}
}
return list;
} /**
* 设置数据
* @param workbook
* @param sheet
* @param professionField 字段数据
* @param professionMsg 数据源
*/
public static void setData(HSSFWorkbook workbook,HSSFSheet sheet,List<HashMap<String, Object>> professionField,List<HashMap<String, Object>> professionMsg) {
for (int d = 0; d < professionMsg.size(); d++) {
HSSFRow row = sheet.createRow((int) d+3); //创建第四行、五行...
row.setHeightInPoints((short)20);//行高
List<String> headerDataList = headerDataList(professionField);
for (int i = 0; i < headerDataList.size(); i++) {
HSSFCell cell = row.createCell((short) i); //创建每一列
String guid = getGuId(headerDataList.get(i).toString(), professionField);
if(professionMsg.get(d).get(guid).toString().getBytes().length > headerDataList.get(i).toString().getBytes().length){
sheet.setColumnWidth(i, professionMsg.get(d).get(guid).toString().getBytes().length*256+1500);
}
cell.setCellStyle(dataStyle(workbook));
cell.setCellValue(professionMsg.get(d).get(guid).toString());//每一列赋值
} }
} /**
* 设置表头字段样式
* @param wb
* @param color 前景色下标
* @return
*/
private static CellStyle dataStyle(Workbook wb){
CellStyle cellStyle=wb.createCellStyle();
// 设置字体
Font font = wb.createFont();
font.setFontName("微软雅黑");//字体类型
font.setFontHeightInPoints((short) 12);// 字号
font.setColor(HSSFColor.BLACK.index);//设置字体颜色
cellStyle.setFont(font);
cellStyle.setWrapText(true);//自动换行
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
borderStyle(cellStyle, IndexedColors.BLACK.getIndex());
return cellStyle;
} /**
* 根据字段名称查询字段field_guid
* @param fieldName 字段名称
* @param professionMsg 数据源
* @return
*/
private static String getGuId(String fieldName,List<HashMap<String, Object>> professionField){
for (HashMap<String, Object> hashMap : professionField) {
if(!"".equals(fieldName)){
if(fieldName.equals(hashMap.get("name"))){
return hashMap.get("field_guid").toString();
}
}
}
return null;
}
}

Excel导出数据库数据的更多相关文章

  1. java导出数据到excel里:直接导出和导出数据库数据

    一.直接导出 package com.ij34.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...

  2. 配置ODBC DSN数据源,导出数据库数据到Excel过程记录

    一.前言 工作中我们可能遇到这样的需要:查询数据库中的信息,并将结果导出到Excel文件.这本来没什么,但数据量比较大时,用PLSQL.toad导出Excel会出现内存不足等情况,使用odbc+Mic ...

  3. 导出数据库数据到Excel表

    后台需要将用户信息数据导入到Excel表中提供给相关人员: 首先查询数据就不多说了: 导入Excel表直接亮代码(采用的是jxl的jar包提供的方法): public static File Impo ...

  4. Java注解(Annotation)用法:利用注解和反射机制指定列名导出数据库数据

    闲来没事,想了一个应用的例子:用java如何把数据库的数据根据我们指定的某几列,如第2列,第4列,第6列导出来到Excel里? 写代码也是为了应用的,写好的代码更重要的是在于思考.我自己思考了这个示例 ...

  5. DB2导入导出数据库数据

    导出数据库中数据 在db2cmd命令下生成建库脚本(-z指定模式名) db2look -d BBS -z db2admin -u db2admin -e -o bbs.sql 在db2cmd命令下导出 ...

  6. c#关于EXCEL导出数据库的做法

    using System;using System.Diagnostics;using System.Collections;using System.Data;using System.Web;us ...

  7. mysql导出数据库数据及表结构

    1,导出远程数据库数据到本地 mysql -A wj_sms -h192.168.1.105 -uroot -p4321 -ss -e "set NAMES 'utf8';SELECT * ...

  8. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel

    ============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...

  9. 导出数据库数据制成Excel和txt

    引用ICSharpCode.SharpZipLib.dll 1.编写压缩和解压代码 using System; using System.Collections.Generic; using Syst ...

随机推荐

  1. 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归

    第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归 上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入 ...

  2. Netty实现高性能的HTTP服务器

    浅谈HTTP Method 要通过netty实现HTTP服务器(或者客户端),首先你要了解HTTP协议. HTTP在客户端 - 服务器计算模型中用作请求 - 响应协议. 例如,web浏览器可以是客户端 ...

  3. 【转】干货,Kubernetes中的Source Ip机制。

    准备工作 你必须拥有一个正常工作的 Kubernetes 1.5 集群,用来运行本文中的示例.该示例使用一个简单的 nginx webserver 回送它接收到的请求的 HTTP 头中的源 IP 地址 ...

  4. 目标检测之R-CNN系列

    Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...

  5. .Net Project 常规结构

    目录:一个.NET网站的成长历程 在个人的日常工作和学习中,接触到不少的项目,这些项目结构大同小异,其结构的核心思想无外乎“分层“. 分层?从字面上理解,看似简单,实则不然.这需要从多个维度去看待这个 ...

  6. Dotspatial 要素重叠部分去除

    private void toolStripButton32_Click(object sender, EventArgs e) { /重叠部分去除操作——测试成功 if (mapMain.Layer ...

  7. Maven 基本的认识

    Maven 基本的认识 1. 什么是Maven? 在平时开发中,经常遇到某个jar包,我在代码层已经Import 和@Automation了,编译器还是提醒你某个jar包找不到,往往这时来个mvn i ...

  8. bat 实现主机hostname的修改

    主机实现hostname的修改原理: 修改注册表中的值: hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName 下的 Comp ...

  9. OPPO X9007 升级到Android5.0 Color2.1(root版) 详细纪实

    今天要做个测试,而测试APK刚好是要求最低5.0版本,正好手里有个老款手机OPPO X9007,而预装的系统是4.3,试了下虽然也能运行,但是主要功能不正常,毕竟人家APK最低要求摆在那. 反正这个手 ...

  10. 4.29 初始mysql