poi导出,需要的poi jar包

步骤一、两个工具类:

1、ExcelUtil.java

package util;

import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; 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.HSSFPalette;
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.ss.usermodel.CellStyle; public class ExcelUtil { public static void creatExcel(Object[][] datas,String table) throws FileNotFoundException, IOException{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("table"); //创建table工作薄
//Object[][] datas = {{"区域产品销售额","",""},{"区域", "总销售额(万元)", "总利润(万元)简单的表格"}, {"江苏省" , 9045, 2256}, {"广东省", 3000, 690}};
HSSFRow row;
HSSFCell cell; short colorIndex = 10;
HSSFPalette palette = wb.getCustomPalette();
Color rgb = Color.GREEN;
short bgIndex = colorIndex ++;
palette.setColorAtIndex(bgIndex, (byte) rgb.getRed(), (byte) rgb.getGreen(), (byte) rgb.getBlue());
short bdIndex = colorIndex ++;
rgb = Color.BLACK;
palette.setColorAtIndex(bdIndex, (byte) rgb.getRed(), (byte) rgb.getGreen(), (byte) rgb.getBlue()); for(int i = 0; i < datas.length; i++) {
row = sheet.createRow(i);//创建表格行
for(int j = 0; j < datas[i].length; j++) {
cell = row.createCell(j);//根据表格行创建单元格
cell.setCellValue(String.valueOf(datas[i][j])); HSSFCellStyle cellStyle = wb.createCellStyle();
if(i == 0 || i == 1) { //设置第一,二行背景颜色
cellStyle.setFillForegroundColor(bgIndex); //bgIndex 背景颜色下标值
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
} cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
//bdIndex 边框颜色下标值
cellStyle.setBottomBorderColor(bdIndex);
cellStyle.setLeftBorderColor(bdIndex);
cellStyle.setRightBorderColor(bdIndex);
cellStyle.setTopBorderColor(bdIndex); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); if(i == datas.length - 1 && j == datas[0].length - 1) { //设置最后一行,最后一列的字体,即表格中最后一个字
//单元格文本可设置字体大小、颜色、斜体、粗体、下划线等。
HSSFFont font = wb.createFont();
font.setItalic(true);
font.setUnderline(HSSFFont.U_SINGLE);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short)14);
cellStyle.setFont(font);
}
cell.setCellStyle(cellStyle);
}
} //加入图片
/* byte[] bt = FileUtils.readFileToByteArray(new File("E:/yes.png"));
int pictureIdx = wb.addPicture(bt,HSSFWorkbook.PICTURE_TYPE_PNG);
CreationHelper helper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
//anchor.setDx1(MSExcelUtil.pixel2WidthUnits(60));
//anchor.setDy1(MSExcelUtil.pixel2WidthUnits(60));
anchor.setCol1(0);
anchor.setRow1(4);
anchor.setCol2(3);
anchor.setRow2(25);
drawing.createPicture(anchor, pictureIdx);*/ //合并单元格
/*CellRangeAddress region = new CellRangeAddress(0, // first row
0, // last row
0, // first column
2 // last column
);
sheet.addMergedRegion(region);*/ //创建表格之后设置行高与列宽
for(int i = 0; i < datas.length; i++) {
row = sheet.getRow(i);
row.setHeightInPoints(30);
}
for(int j = 0; j < datas[0].length; j++) {
sheet.setColumnWidth(j, MSExcelUtil.pixel2WidthUnits(160));
}
wb.write(new FileOutputStream(table)); } }

2、MSExcel.java

package util;
public class MSExcelUtil { public static final short EXCEL_COLUMN_WIDTH_FACTOR = 256;
public static final int UNIT_OFFSET_LENGTH = 7;
public static final int[] UNIT_OFFSET_MAP = new int[] { 0, 36, 73, 109, 146, 182, 219 }; /**
* pixel units to excel width units(units of 1/256th of a character width)
*
* @param pxs
* @return
*/
public static short pixel2WidthUnits(int pxs) {
short widthUnits = (short) (EXCEL_COLUMN_WIDTH_FACTOR * (pxs / UNIT_OFFSET_LENGTH));
widthUnits += UNIT_OFFSET_MAP[(pxs % UNIT_OFFSET_LENGTH)];
return widthUnits;
} /**
* excel width units(units of 1/256th of a character width) to pixel units
*
* @param widthUnits
* @return
*/
public static int widthUnits2Pixel(int widthUnits) {
int pixels = (widthUnits / EXCEL_COLUMN_WIDTH_FACTOR) * UNIT_OFFSET_LENGTH;
int offsetWidthUnits = widthUnits % EXCEL_COLUMN_WIDTH_FACTOR;
pixels += Math.round(offsetWidthUnits
/ ((float) EXCEL_COLUMN_WIDTH_FACTOR / UNIT_OFFSET_LENGTH)); return pixels;
}
}

步骤二、action中调用工具类代码:

public void daochu() throws FileNotFoundException, IOException {
User user = (User) ActionContext.getContext().getSession().get("user");
List<Attendance> list = new ArrayList<Attendance>();
if (user != null) {
Server server = serverService.getEntity(user.getServer().getId());
String[] str = order.split(",");
for (int i = 0; i < str.length; i++) {
List<Department> dapartmentList = departmentService
.find(str[i],server.getName());
for (int j = 0; j < dapartmentList.size(); j++) {
List<Attendance> list0 = attendanceService.findByDT(dapartmentList.get(j).getId(), date1, date2);
if(list0.size() > 0){
for(Attendance a : list0){
list.add(a);
}
}
}
}
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
JSONObject json = new JSONObject();
//List<Attendance> list = attendanceService.getScrollData().getResultlist();
Object[][] datas = new Object[list.size()+1][4]; //第一个'3':数据量(行) 第二个'3':字段个数(列)
datas[0][0] = "部门";
datas[0][1] = "职务";
datas[0][2] = "姓名";
datas[0][3] = "异常显示";
for(int i=0;i<list.size();i++){
for(int j=0;j<4;j++){
datas[i+1][0] = list.get(i).getDepartment().getName();
datas[i+1][1] = list.get(i).getUser().getPost().getName();
datas[i+1][2] = list.get(i).getUser().getUsername();
datas[i+1][3] = list.get(i).getState();
}
}
String table = "e:/考勤.xls";
ExcelUtil.creatExcel(datas, table);
json.put("path", table);
response.getWriter().print(json.toString());
}

步骤三、前台代码:

jQuery("#search_button2").click(function() {
var obj = document.getElementsByName("Department_choice");
var s1 = '';
for (var i = 0; i < obj.length; i++) {
if (obj[i].checked)
s1 += obj[i].value + ',';
}
var year = document.getElementById("year").value;
var month = document.getElementById("month").value;
var day = document.getElementById("day").value;
var s2 = year + '-' + month + '-' + day;
var year1 = document.getElementById("year1").value;
var month1 = document.getElementById("month1").value;
var day1 = document.getElementById("day1").value;
var s3 = year1 + '-' + month1 + '-' + day1;
jQuery.post("AttendanceAction_daochu.do",{
order:s1,
date1:s2,
date2:s3,
}, function(data, status) {
alert("导出成功,请查看"+data.path);
},"json"); });

导出(Excel格式)的更多相关文章

  1. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...

  2. 使用PHPExcel导入导出excel格式文件

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  3. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  4. 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型

    如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...

  5. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

  6. 插件 ExcelWrite 导出Excel格式数据/获取图层

    使用ExcelWrite 插件可以导出Excel格式的数据: ExcelFile端口接 文件数据路径 最后面的是文件名,不用写格式 如果存储树形数据,需要 勾选 List To Row 选项: 附: ...

  7. [转发]导出Excel 格式 mso-number-format

    应用中经常会遇到要从系统或数据库中导出数据平面文件,一般是导出到txt,csv或excel.txt和csv一般用在系统间的数据交换,而 excel一般有较好的显示效果,可以按照一定的模板导出,导出就不 ...

  8. 导出Excel格式数据

    /** * 导出规则统计数据 excel格式 * @param bill * @return */ public String exportExamsignupExamnoExcel ( String ...

  9. GridView导出excel格式问题

    在导出的点击事件中,代码如下: //指定导出对应单元格为文本样式 string style = @"<style> .test { vnd.ms-excel.numberform ...

  10. mysql数据导出excel格式+乱码解决

    1:导出的SQL命令,只需要加上“FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' ” ...

随机推荐

  1. 【Beta】Scrum08

    Info 由于雾霾严重,拍摄的照片笼罩了一层薄薄的白色. 时间:2016.12.21 21:35 时长:25min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.12.23 ...

  2. Windows bat脚本学习(1)

    基础 首先所有命令在cmd命令行中都能找到说明: 例如 想知道type用法 输入type /? 其他命令都一样 type [drive:][path] filename 显示文本文件内容 虽然有点鸡肋 ...

  3. 逆向工程学习第二天--动手开发自己的第一个shellcode

    一个简单的c语言添加windows管理员账号的小程序,之前在渗透的时候经常用到,现在拿它来做自己的第一个shellcode. C代码: #pragma comment(lib, "netap ...

  4. mybatis- spring 批量实现数据导入数据库

    终于实现了ibatis的批量插入,此方法插入3000条数据,比单条插入可以节省一半的时间XML代码: <insert id="insertBatch" parameterTy ...

  5. Java数据结构——树的三种存储结构

    (转自http://blog.csdn.net/x1247600186/article/details/24670775) 说到存储结构,我们就会想到常用的两种存储方式:顺序存储和链式存储两种. 先来 ...

  6. springmvc @responsebody 406/415问题解决

    提供几个解决思路 1.如果项目中用的spring jar包是4.x版本, 需要jackson-annotations-2.x/jackson-core-2.x/jackson-databind-2.x ...

  7. HiHo Coder字典树 TrieTree

    题目地址:http://hihocoder.com/problemset/problem/1014 不得不吐槽一下这个OJ,题目质量是很好的,但是提交代码后返回的信息也太少了吧!!!本机测试无误,提交 ...

  8. 【linux使用】bash shell命令行常用快捷键 (转载)

    移动: Ctrl + A: 移动到当前编辑的命令行首, Ctrl + E: 移动到当前编辑的命令行尾, Ctrl + F 或 ->:按字符右移(往命令行尾部方向,前移) Ctrl + B 或 & ...

  9. Linux 基础命令

    man      帮助命令   命令 --help   命令的简单帮助 help      命令的帮助(bash的内置命令) mkdir    创建目录  如makdir /data mkdir   ...

  10. nmq消息队列解析

    消息中间件NMQ 1.What is nmq? nmq = new message queue; 一个通用消息队列系统 为在线服务设计 什么是消息队列?问什么需要?有哪些功能? 消息队列的本质:1.多 ...