java新建excel文件导出(HSSFWorkbook)
public ActionForward exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession(true);
String tile = "用户操作日志";
try{
HSSFWorkbook workbook = new HSSFWorkbook();
//添加Worksheet(不添加sheet时生成的xls文件打开时会报错)
HSSFSheet sheet = workbook.createSheet("Sheet1");
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
HSSFRow row = sheet.createRow(0);
/**
* 合并单元格
* 第一个参数:第一个单元格的行数(从0开始)
* 第二个参数:第二个单元格的行数(从0开始)
* 第三个参数:第一个单元格的列数(从0开始)
* 第四个参数:第二个单元格的列数(从0开始)
*/
sheet.addMergedRegion(new Region(0, (short)0, 0, (short)4));
HSSFCell cell = row.createCell((short)0);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(tile);
row = sheet.createRow(1);
HSSFCell cell1 = row.createCell((short)0);
HSSFCell cell2 = row.createCell((short)1);
HSSFCell cell3 = row.createCell((short)2);
HSSFCell cell4 = row.createCell((short)3);
HSSFCell cell5 = row.createCell((short)4);
HSSFCell cell6 = row.createCell((short)5);
HSSFCell cell7 = row.createCell((short)6);
HSSFCell cell8 = row.createCell((short)7);
// 定义单元格为字符串类型
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
cell4.setCellType(HSSFCell.CELL_TYPE_STRING);
cell5.setCellType(HSSFCell.CELL_TYPE_STRING);
cell6.setCellType(HSSFCell.CELL_TYPE_STRING);
cell7.setCellType(HSSFCell.CELL_TYPE_STRING);
cell8.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
cell4.setEncoding(HSSFCell.ENCODING_UTF_16);
cell5.setEncoding(HSSFCell.ENCODING_UTF_16);
cell6.setEncoding(HSSFCell.ENCODING_UTF_16);
cell7.setEncoding(HSSFCell.ENCODING_UTF_16);
cell8.setEncoding(HSSFCell.ENCODING_UTF_16);
// 在单元格中输入数据
cell1.setCellValue("序号");
cell2.setCellValue("账号");
cell3.setCellValue("操作类型");
cell4.setCellValue("一级模块");
cell5.setCellValue("二级模块");
cell6.setCellValue("操作对象");
cell7.setCellValue("操作时间");
cell8.setCellValue("操作结果");
//sheet.setDefaultColumnWidth((short) 20); //设置默认宽度
sheet.setColumnWidth((short) 4, (short) 5120);
sheet.setColumnWidth((short) 5, (short) 10240);
sheet.setColumnWidth((short) 6, (short) 5120);
HttpSession sessionold = request.getSession(true);
AccountInfo accountInfo = (AccountInfo) sessionold.getAttribute("accountInfo");
OperationLogForm logForm = (OperationLogForm) form;
LogService logSer = new LogService();
String accountName = logForm.getAccountName();
Vector<Hashtable<String, String>> logList = logSer.queryLog(logForm,accountName, -1,accountInfo.getAccountType());
Hashtable data = null;
for (int i = 0; i < logList.size(); i++){
data = logList.get(i);
row = sheet.createRow((short)(i + 2));
cell1 = row.createCell((short)0);
cell2 = row.createCell((short)1);
cell3 = row.createCell((short)2);
cell4 = row.createCell((short)3);
cell5 = row.createCell((short)4);
cell6 = row.createCell((short)5);
cell7 = row.createCell((short)6);
cell8 = row.createCell((short)7);
// 定义单元格为字符串类型
cell1.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
cell4.setCellType(HSSFCell.CELL_TYPE_STRING);
cell5.setCellType(HSSFCell.CELL_TYPE_STRING);
cell6.setCellType(HSSFCell.CELL_TYPE_STRING);
cell7.setCellType(HSSFCell.CELL_TYPE_STRING);
cell8.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
cell4.setEncoding(HSSFCell.ENCODING_UTF_16);
cell5.setEncoding(HSSFCell.ENCODING_UTF_16);
cell6.setEncoding(HSSFCell.ENCODING_UTF_16);
cell7.setEncoding(HSSFCell.ENCODING_UTF_16);
cell8.setEncoding(HSSFCell.ENCODING_UTF_16);
cell1.setCellValue(i+1);
cell2.setCellValue(data.get("username").toString());
if("1".equals(data.get("operatetype").toString())){
cell3.setCellValue("新增");
}else if("2".equals(data.get("operatetype").toString())){
cell3.setCellValue("修改");
}else if("4".equals(data.get("operatetype").toString())){
cell3.setCellValue("审批");
}else if("5".equals(data.get("operatetype").toString())){
cell3.setCellValue("否决");
}else if("6".equals(data.get("operatetype").toString())){
cell3.setCellValue("分配角色");
}else if("7".equals(data.get("operatetype").toString())){
cell3.setCellValue("分配资源");
}else{
cell3.setCellValue("删除");
}
cell4.setCellValue(data.get("fmodulename").toString());
cell5.setCellValue(data.get("smodulename").toString());
cell6.setCellValue(data.get("operobj").toString());
cell7.setCellValue(data.get("operatetime1").toString());
if("0".equals(data.get("operateresult").toString())){
cell8.setCellValue("成功");
}else{
cell8.setCellValue("失败");
}
}
response.reset();
response.setContentType("application/octet-stream;charset=GB2312");
response.setHeader("Content-Disposition", "attachment; filename=\"OperationLog.xls\"");
OutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
java新建excel文件导出(HSSFWorkbook)的更多相关文章
- JXL包大解析;Java程序生成excel文件和解析excel文件内容
最近需求变化,需要把excel导入 我以前没有做过,所以我查了一些资料 和参考别人的代码 以下是多种方式: import java.io.File; import java.io.FileInputS ...
- java实现Excel数据导出
java实现Excel数据导出: 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel Jakarta POI 是一套用于访问微软格式文档的Java ...
- JAVA实现Excel导入/导出【转】
JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...
- java写入excel文件poi
java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils; import java.io.File; import ja ...
- java 操作excel 文件
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- JAVA读取EXCEL文件异常Unable to recognize OLE stream
异常: jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl.read.biff.CompoundFile.<in ...
- 根据源Excel文件,新建Excel文件
/** * 描述:根据源Excel文件,创建新的Excel文件 * @param excelFile * @throws CheckException */public static void cre ...
- JAVA对Excel文件进行操作
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
随机推荐
- Java中将字符串用空格分割成字符串数组的split方法
官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner; public clas ...
- redis源码解读--内存分配zmalloc
目录 主要函数 void *zmalloc(size_t size) void *zcalloc(size_t size) void zrealloc(void ptr, size_t size) v ...
- echarts配置项说明//持续添加
<template> <div> <!-- <h2>本月抄表完成率</h2> --> <!-- <div id=&qu ...
- SAS学习笔记23 线性回归、多元回归
线性回归 由样本资料计算的回归系数b和其他统计量一样,存在抽样误差,因此,需要对线性回归方程进行假设检验 1.方差分析 2.t检验 相关系数的假设检验 相关系数(correlation coeffic ...
- SAS学习笔记3 输入输出格式(format、informat函数)
format函数:定义输出格式 informat函数:定义输入格式 proc format:定义输出格式 从外部读取文件 proc format过程步
- sysbench安装和测试
1.首先安装依赖 yum install mariadb-devel yum install automake libtool –y 2.下载安装包 wget https://github.com/a ...
- Codefroces 1245 F. Daniel and Spring Cleaning
传送门 考虑简单的容斥 设 $F(n,m)$ 表示 $a \in [1,n] , b \in [1,m]$ 的满足 $a+b=a \text{ xor } b$ 的数对的数量 那么答案即为 $F(r, ...
- C# 对象互转
/// <summary> /// 适用于初始化新实体 /// </summary> static public T RotationMapping<T, S>(S ...
- zookeeper安装和使用 windows环境
简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...
- JS 长按 移动端
实质上,长按的时间不应该过长,因为这有可能与手机系统的部分长按手势产生冲突,但也不宜过短,因为长按时间过短与点击没有任何区别, 理论上,判断长按结束,在手机端上仅设置mouseup动作就可以, < ...