JAVA创建并写入内容到xlsx文件
首先需要在web项目中导入jxl.jar 包
//action中代码
public String downloadReport(){
String path = System.getProperty("java.io.tmpdir") + "\\xlsx"+ (new java.util.Date().getTime());
List<User> users=new ArrayList<User>();//查询结果集
users.add(new User(1, "屌丝1", 18, "男"));
users.add(new User(2, "妹子2", 19, "女"));
users.add(new User(3, "屌丝3", 20, "男"));
users.add(new User(4, "妹子4", 21, "女"));
users.add(new User(5, "屌丝5", 22, "男"));
try {
createExcel(path,List<User> users);//方法代码在下面
//下载文件
response().setContentType("application/x-msdownload;charset=UTF-8"); // 设置响应类型为下载
response().setCharacterEncoding("UTF-8");//页面乱码问题
String docName = java.net.URLEncoder.encode("report_case.xls", "UTF-8");//文件名称设置
response().setHeader("Content-Disposition", "attachment; filename="+ new String(docName.getBytes("UTF-8"), "UTF-8"));
BufferedInputStream br = new BufferedInputStream(new FileInputStream(path));
byte[] buf = new byte[1024];
int len = 0;
OutputStream out = response().getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);//把下载的文档写入本地电脑中去
} catch (IOException e) {
e.printStackTrace();
}finally{
out.close();
br.close();
}
return null;
}
//下载调用方法
/**
* 设置表格标题和风格
* @param path
* @param users
*/
public static void createExcel(String path,List<User> users){
try {
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File(path));
//创建工作表
WritableSheet sheet=workbook.createSheet("测试表格", 0);
//置页眉、页脚
sheet.setHeader("页眉", "", "第 &P 页,共 &N 页"); // 设置页眉
sheet.setFooter("", "", "&D &T"); // 设置页脚
//设置第几列的的列宽
sheet.setColumnView(0, 20);
sheet.setColumnView(1, 20);
sheet.setColumnView(2, 20);
sheet.setColumnView(3, 20);
//指定几种单元格的字体样式
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
WritableFont BoldFont12 = new WritableFont(WritableFont.ARIAL, 12,WritableFont.BOLD);//加粗12号字体
WritableFont BoldFont20 = new WritableFont(WritableFont.ARIAL, 20,WritableFont.BOLD);//加粗18号字体
//用于台头
WritableCellFormat wcf_head=new WritableCellFormat(BoldFont20);
wcf_head.setBorder(Border.ALL, BorderLineStyle.THIN);//线条
wcf_head.setVerticalAlignment(VerticalAlignment.CENTRE);//垂直对齐
wcf_head.setAlignment(Alignment.CENTRE);//水平对齐
wcf_head.setWrap(false);//是否换行
// 用于标题
WritableCellFormat wcf_title = new WritableCellFormat(BoldFont12);
wcf_title.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_title.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_title.setWrap(false); // 是否换行
// 用于正文
WritableCellFormat wcf_text = new WritableCellFormat(NormalFont);
wcf_text.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_text.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_text.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_text.setWrap(false); // 是否换行
// 用于跨行
WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);
wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐
wcf_merge.setAlignment(Alignment.LEFT);
wcf_merge.setWrap(true); // 是否换行
sheet.setRowView(0, 800);//设置行高
sheet.setRowView(1, 500);
sheet.addCell(new Label(0, 0, "保险信息", wcf_head));
sheet.mergeCells(0,0,4,0);//合并第一行的第1列到第一行的第4列
sheet.addCell(new Label(0, 1, "编号", wcf_title));
sheet.addCell(new Label(1, 1, "姓名", wcf_title));
sheet.addCell(new Label(2, 1, "年龄",wcf_title));
sheet.addCell(new Label(3, 1, "性别", wcf_title));
//把上面缓存中内容写到文件中去 2表示从第几行开始标题除外
addCellFreezeOrder(2,users,sheet,wcf_text);
workbook.write();
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 把缓存中的数据写到文件当中去
* @param i
* @param users
* @param sheet
* @param wcf_text
*/
private static void addCellFreezeOrder(int i, List<User> users,
WritableSheet sheet, WritableCellFormat wcf_text) {
WritableFont wcf_font=(WritableFont) wcf_text.getFont();//用于正文、
//设置文字格式类型按照文本格式输出
WritableCellFormat wcf_numberformat=new WritableCellFormat(wcf_font,NumberFormats.TEXT);
try {
wcf_numberformat.setBorder(Border.ALL, BorderLineStyle.THIN);
wcf_numberformat.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_numberformat.setAlignment(Alignment.LEFT); // 水平对齐
wcf_numberformat.setWrap(false); // 是否换行
for(User s:users){
sheet.addCell(new Label(0,i,s.getSequen()+"",wcf_text));
sheet.addCell(new Label(1,i,s.getName(),wcf_text));
sheet.addCell(new Label(2,i,s.getAge()+"",wcf_text));
sheet.addCell(new Label(3,i,s.getSex(),wcf_text));
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
//实体类
class User{
private int sequen;
private String name;
private int age;
private String sex;
public User(int sequen, String name, int age, String sex) {
super();
this.sequen = sequen;
this.name = name;
this.age = age;
this.sex = sex;
}
public int getSequen() {
return sequen;
}
public void setSequen(int sequen) {
this.sequen = sequen;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
JAVA创建并写入内容到xlsx文件的更多相关文章
- 在C#程序中,创建、写入、读取XML文件的方法
一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...
- Java读取、写入、处理Excel文件中的数据(转载)
原文链接 在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Ex ...
- 二、点击导出按钮创建excle写入内容后下载功能实现
/*涉及的jar包1)biframework.jar用于实现分页功能2)poi-3.7-20101029.jar:读取.创建.修改excle.word.ppt的Java APIApache POI是创 ...
- python从命令窗口启动脚本 创建并写入内容到文件示例
写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...
- java写入内容到本地文件 -读取文件内容
/** 日志记录 * @author sys * @param content 要写入的类容 * @param path 目标路径 c:/log/ * @param filename 文件名 log. ...
- Java创建、重命名、删除文件和文件夹(转)
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...
- java使用poi(XSSFWorkbook)读取excel(.xlsx)文件
经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定.其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx这里介绍的使用poi方式(XSSF ...
- java 注解方式 写入数据到Excel文件中
之前有写过一点关于java实现写Excel文件的方法,但是现在看来,那种方式用起来不是太舒服,还很麻烦.所以最近又参考其他,就写了一个新版,用起来不要太爽. 代码不需要解释,惯例直接贴下来: publ ...
- 关于java中创建文件,并且写入内容
以下内容完全为本人原创,如若转载,请注明出自:http://www.cnblogs.com/XiOrang/ 前两天在项目中因为要通过http请求获取一个比较大的json数据(300KB左右)并且保存 ...
随机推荐
- Vue#条件渲染
根据不同的条件,响应不同的事件. https://jsfiddle.net/miloer/zed5p1r3/ 可以用template来包装元素,当然浏览器的最终渲染结果不会包含它.我觉得主要用它来自定 ...
- 智能车学习(十)——MMA8451加速度计的使用
一.驱动说明: 就是使用I2C的通信方式驱动这款加速度计就行了,代码的话选择使用51单片机的代码进行移植. 二.代码分享: 1.头文件: #ifndef MMA8451_H #define MMA84 ...
- 关于转换大写中文金额-新学的java函数整理
toCharArray public char[] toCharArray() 将此字符串转换为一个新的字符数组. 返回: 一个新分配的字符数组,它的长度是此字符串的长度,而且内容被初始化为包含此字符 ...
- position之absolute与relative 详解
absolute:绝对定位: relative:相对定位: 唉,以前只是知是知道这两个单词的汉语意思,然后呢,,,怎么用...也是摸凌两可的用.终于抽出时间来看看了: 1.绝对定位:absulute ...
- [自动运维]weblogic自动发布
近期一个项目属于测试过渡期,bug修复比较频繁,每次都会伴随着项目的打包.上传.发布,此类重复操作近乎每天都会进行,刚好最近在看python相关资料,决定重新将此前学习的weblogic的wlst相关 ...
- #include<>与#include""
对于头文件的包含,使用“<>”时,系统会到默认目录(编译器及环境变量,工程文件定义的头文件寻找目录,包括Qt安装的include目录)查找要包含的文件,这是标准方式: 用双引号时,系统先到 ...
- Eclipse Che:下一代基于 Web 的 IDE
即使对于熟练的开发人员,想要去为一个项目贡献代码,正确的安装和配置一个集成开发环境.工作区 workspace和构建工具,都是一个十分艰难和浪费时间的任务.Codenvy 的CEO,Tyler Jew ...
- 每天一个Linux命令---tcpdump
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头” ...
- Shell 编程基础之 Case 练习
一.语法 case $变量 in "第一个变量内容") # 每个变量内容建议用双引号括起来,关键字则为小括号 ) # 执行内容 ;; # 每个类别结尾使用两个连续的分号来处理! & ...
- js、PHP将分数字符串转换为小数
PHP:$s = "1/3"; $s = str_replace(array('[',']','mod'),array('(',')','%'),$s);//将原三字符串中的只有在 ...