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 简单介绍: 百度文 ...
随机推荐
- 纯css实现移动端横向滑动列表&&overflow:atuo;隐藏滚动条
<!DOCTYPE html> <html> <head> <title>横向滑动</title> <style type=" ...
- js:把字符串转为变量使用; js下将字符串当函数去执行的方法
1 把字符串当变量使用 通过计算 string 得到的值(如果有的话).该方法只接受原始字符串作为参数 demo: var type = "car"; var newStr = & ...
- Python操作Redis(转)
原文1:https://cloud.tencent.com/developer/article/1151834 原文2:https://www.cnblogs.com/zhaohuhu/p/91406 ...
- 【Transact-SQL】找出不包含字母、不包含汉字的数据
原文:[Transact-SQL]找出不包含字母.不包含汉字的数据 测试的同事,让我帮忙写个sql语句,找出表中xx列不包含汉字的行. 下面的代码就能实现. IF EXISTS(SELECT * FR ...
- RESTful接口开发
package com.aaaaaa.manager.controller; import org.springframework.beans.factory.annotation.Autowired ...
- vue中子组件的created、mounted钩子中获取不到props中的值问题
父子组件通信 这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可 例如: 父组件中: <template> <div> <head- ...
- scss语法格式(常用版记录)
这篇文章是我自己在学习Scss时的笔记~ 更多学习可以参照官网(链接:https://www.sass.hk/docs/) 一,Scss语法格式 1.嵌套规则 2.父选择器&(伪类嵌套 ...
- 手把手教你如何用java8新特性将List中按指定属性排序,过滤重复数据
在java中常常会遇到这样一个问题,在实际应用中,总会碰到对List排序并过滤重复的问题,如果List中放的只是简单的String类型过滤so easy,但是实际应用中并不会这么easy,往往List ...
- win中使用curl上传文件报错
今天晚上复现“WordPress插件Easy WP SMTP反序列化漏洞”时,需要使用curl上传文件,我又用的windows环境,一直出错 curl: (26) couldn't open file ...
- 有选择性的启用SAP UI5调试版本的源代码
在低版本的SAP UI5应用中,我们一旦切换成调试模式,那么应用程序源代码和UI5框架程序的源代码的调试版本都会重新加载,耗时很长. 我最近发现UI5新版本1.66.1提供了选择性加载调试版本的源代码 ...