一、Excel依赖包POI

(1)Maven配置

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.7</version></dependency>

(2)jar下载地址http://poi.apache.org/download.html

二、Java代码实例

Excel工具代码

package com.mk.util;import com.mk.bean.LogInfo;
import org.apache.poi.hssf.usermodel.*;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.util.CellRangeAddress;public class Excels {public static byte[] export(String sheetName, String title, List<LogInfo> list, int start, int end) {if (list == null||start>end) {return null;}HSSFWorkbook workbook = new HSSFWorkbook(); //工作簿initWorkbook(workbook, sheetName, title, list,start,end);//先写到字节数组,在从字节数组读出  ByteArrayOutputStream os = new ByteArrayOutputStream();try {workbook.write(os);byte[] bytes = os.toByteArray();return bytes;} catch (IOException ex) {Logger.getLogger(Excels.class.getName()).log(Level.SEVERE, null, ex);} finally {try {os.close();} catch (IOException ex) {Logger.getLogger(Excels.class.getName()).log(Level.SEVERE, null, ex);}}return null;}private static final int MAX_ROWS = 65535;/*** 初始化工作簿* @param workbook 工作簿* @param sheetName 工作表名* @param title  标题* @param list  数据* @param start 起始索引,起始值为0* @param end   截止索引,为末尾索引+1*/private static void initWorkbook(HSSFWorkbook workbook, String sheetName, String title,List<LogInfo> list, int start, int end) {assert end - start <= MAX_ROWS - 2;HSSFSheet sheet = workbook.createSheet(sheetName); //工作表 initTitle(workbook, sheet, title, 0, 16, 800, 0, 0, 0, 2);// 属性样式 HSSFCellStyle attrCellStyle = createStyle(workbook, 10, true, HSSFFont.BOLDWEIGHT_BOLD);// 默认样式HSSFCellStyle defaultCellStyle = createStyle(workbook, 10, true, HSSFFont.BOLDWEIGHT_NORMAL);//属性行HSSFRow attrRow = sheet.createRow(1);final int baseFont=10;sheet.setColumnWidth(0, baseFont*400);sheet.setColumnWidth(1, baseFont*800);sheet.setColumnWidth(2, baseFont*1200);HSSFCell cell = attrRow.createCell(0);cell.setCellValue("索引");cell.setCellStyle(attrCellStyle);cell = attrRow.createCell(1);cell.setCellValue("时间");cell.setCellStyle(attrCellStyle);cell = attrRow.createCell(2);cell.setCellValue("信息");cell.setCellStyle(attrCellStyle);DateFormat dateFomater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");for (int i = 2; start < end; i++) {LogInfo logInfo = list.get(start++);HSSFRow row = sheet.createRow(i);//除开标题和属性行//索引cell = row.createCell(0);cell.setCellValue(logInfo.getIndex());cell.setCellStyle(defaultCellStyle);//时间cell = row.createCell(1);cell.setCellValue(dateFomater.format(logInfo.getTime()));cell.setCellStyle(defaultCellStyle);//信息cell = row.createCell(2);cell.setCellValue(logInfo.getInfo());cell.setCellStyle(defaultCellStyle);}}/*** 设置工作表标题** @param workbook 工作簿* @param sheet 工作表* @param title 标题* @param rowIndex 当前行* @param fontSize 字体* @param height 高度* @param firstRow 合并区域起始行* @param lastRow 合并区域末尾行* @param firstCol 合并区域起始列* @param lastCol 合并区域末尾列*/private static void initTitle(HSSFWorkbook workbook, HSSFSheet sheet,String title, int rowIndex, int fontSize, int height, int firstRow,int lastRow, int firstCol, int lastCol) {HSSFCellStyle titleCellStyle = createStyle(workbook, fontSize, true, HSSFFont.BOLDWEIGHT_BOLD);//标题行HSSFRow titleRow = sheet.createRow(0);titleRow.setHeight((short) height);    //标题行高度HSSFCell titleCell = titleRow.createCell(rowIndex);  //标题单元titleCell.setCellValue(title);   //设置标题titleCell.setCellStyle(titleCellStyle);sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol));//指定合并区域  }private static HSSFCellStyle createStyle(HSSFWorkbook workbook, int fontSize, boolean wrapText, short boldweight) {// 标题字体HSSFFont font = workbook.createFont();font.setFontHeightInPoints((short) fontSize);// 字体大小font.setBoldweight(boldweight);   //字体加粗//标题样式HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平中间对齐cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直中间对其cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); //顶边cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//底边cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); //左边cellStyle.setWrapText(wrapText);  //自动换行cellStyle.setFont(font);//样式字体return cellStyle;}
}

日志类

package com.mk.bean;import java.util.Date;public class LogInfo {private int index;private  Date time;private  String info;public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}public Date getTime() {return time;}public void setTime(Date time) {this.time = time;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

测试代码

package com.mk.testmaven;import com.mk.bean.LogInfo;
import com.mk.util.Excels;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class Test {public static void main(String[] args) {List<LogInfo> list=new ArrayList<>();LogInfo logInfo=new LogInfo();logInfo.setIndex(0);logInfo.setInfo("你好");logInfo.setTime(new Date(2018,9,12));list.add(logInfo );logInfo=new LogInfo();logInfo.setIndex(1);logInfo.setInfo("问你");logInfo.setTime(new Date(2018,9,15));list.add(logInfo );logInfo=new LogInfo();logInfo.setIndex(2);logInfo.setInfo("世界");logInfo.setTime(new Date(2018,9,17));list.add(logInfo );byte[] bs=Excels.export("1", "日志", list,0,list.size());try (FileOutputStream outputStream=new FileOutputStream("D:/log.xls")){outputStream.write(bs);outputStream.flush();} catch (Exception e) {}}
}

Java Excel导出相关推荐

  1. java excel 导出数据文件格式无效

    java excel 导出数据文件格式无效 的原因 WritableWorkbook workbook=Workbook.createWorkbook(new File("h:\\a.xls ...

  2. java excel导出(表头合并,多行表头)

    java excel导出(表头合并,多行表头) 原创:http://www.cnblogs.com/NJM-F/p/10222152.html @RequestMapping(value=" ...

  3. Java Excel导出复杂excel表格样式之ExcelUtil工具类

    Java Excel导出包括普通导出及复杂表格样式,主要是对于需要进行行列合并的列进行特殊处理,计算清楚起始行,结束行,起始列,结束列. 普通导出可以是所有列,也可以是包含某些列,或者排除某些列: 1 ...

  4. java Excel导出功能之 不固定列表格

    背景:考勤周期为本月19号至上月20号,则每个月考勤周期表的列是动态变化的.所有数据显示和excel导出功能都需要动态的进行处理. 显示格式如下图 前端 checkin.jsp<%@ page ...

  5. Java excel导出压缩zip并加密(拿起即用,有用请点赞,不做白嫖怪!)

    文章目录 1.前言 2.开发思路 以下某些类缺少的可以去我上篇文章拿 4.效果 5.结尾了 6.最最后 1.前言 上篇文章我有写了java用poi导出excel加密,但excel加密懂点电脑的都知道怎 ...

  6. java Excel导出工具类

    Excel工具类 一.开发原因 最近工作的时候,正在写关于Excel导出功能,由于当前使用的工具类不太灵活和不易看懂,自己从头写又很浪费时间等原因,我决定自己写一款很简单的Excel导出的工具类,仅仅 ...

  7. java excel导出并下载

    在使用时,直接传递参数并调用该方法即可 import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; impor ...

  8. 自己写的java excel导出工具类

    最近项目要用到excel导出功能,之前也写过类似的代码.因为这次项目中多次用到excel导出.这次长了记性整理了一下 分享给大伙 欢迎一起讨论 生成excel的主工具类: public class E ...

  9. java excel 导出_java导出Excel通用方法实例

    数据导出到Excel几乎是所有客户都会提出的一个需求.下面我就分享一下我的代码. 首先需要引入的jar包: 然后就是正式代码了. package lcy._41_50; import java.io. ...

  10. java excel导出2007_java操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

最新文章

  1. 第十六届智能车竞赛MCU这么多,该怎么办?别慌,RT-Thread来帮忙。
  2. nvidia驱动程序与windows版本不兼容
  3. 深入理解groupByKey、reduceByKey区别——本质就是一个local machine的reduce操作
  4. nginx 405错误后 用get重定向
  5. php 子类名,php的继承方法获取子类名
  6. 成功解决AttributeError: module 'numpy' has no attribute 'integer'
  7. SpringSecurity分布式整合之jwt和rsa说明
  8. IE edge是怎么了??
  9. Echarts地图编写
  10. python 代码片段9
  11. java拆分任意五位数_五位数拆分出各位 - osc_foo7glsg的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. java两个return_关于java:调用另一个方法时return语句不起作用
  13. boost::array与std::vector使用与性能
  14. cad2020 开始_中望cad2020发布,附简体中文免费版安装教程
  15. 第四周项目1-三角形类的构造函数
  16. 记忆拼图游戏设计及完整代码
  17. greenplum segment down 实例
  18. 商家如何抓住当下最火的抖音本地生活?
  19. windows无法telnet解决办法
  20. 【ACWing】658. 一元二次方程公式

热门文章

  1. Java实现队列(循环队列,链队列)
  2. Stack(栈 c++模版实现)
  3. Circle and Points POJ - 1981(单位圆覆盖最多点)
  4. [kuangbin]各种各样的题单
  5. CodeForces - 76E Points
  6. CF1408G:Clusterization Counting(区间dp、克鲁斯卡尔重构树)
  7. CF750E-New Year and Old Subsequence【动态dp】
  8. AT2070-[ARC061D]3人でカードゲーム/Card Game for Three【计数,组合数学】
  9. P7515-[省选联考 2021A卷]矩阵游戏【差分约束】
  10. P1446-[HNOI2008]Cards【Burnside引理,dp】