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. decimal与double,float的选择与区别

    decimal 类型可以精确地表示非常大或非常精确的小数.大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal类型存储而不失其精确性.该类型对于必须避免舍入错误的应用程序( ...

  2. MyBatis源码分析(5)——内置DataSource实现

    @(MyBatis)[DataSource] MyBatis源码分析(5)--内置DataSource实现 MyBatis内置了两个DataSource的实现:UnpooledDataSource,该 ...

  3. PHP获取接口数据(模拟Get)

    当我们在做PHP开发的时候,很多时候需要对接口进行测试,或者更方便的调用一些已有模块的接口,取到结果并进行后续操作,我们可以通过curl进行模拟提交post和get请求,来去实现这些功能. 之后就可以 ...

  4. JavaScript闭包浅谈

    ------------------- 作者:willingtolove: 本文链接:http://www.cnblogs.com/willingtolove/p/4745889.html 1. 变量 ...

  5. web前端知识体系总结

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  6. 监视 Windows 剪切板

    一.先看代码 import win32con,win32gui import win32clipboard as cb class MyWindow(): def __init__(self): #注 ...

  7. Java与各种数据库连接代码

    6.MySQL数据库Class.forName("org.gjt.mm.mysql.Driver").newInstance();String url ="jdbc:my ...

  8. 在XP上运行IIS5.1新建站点

    系统问题,XP下IIS5.1不能直接新建站点,因为内核限制只能同时运行一个站点,要想新建站点,必须把当前站点停掉,然后用adsutil.vbs脚本创建,脚本在C:\Inetpub\AdminScrip ...

  9. PYTHON文件操作(二)

    class file(object) def close(self): # real signature unknown; restored from __doc__ 关闭文件 "" ...

  10. 如何利用谷歌浏览器快速的通过方法名来确定多个js文件中的某一具体文件;