生成一个 有样式的 excel 文件

还是三部 ,  第二部中 加入了  设置头的样式,* 设置标题样式,设置其他单元格样式

1.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

    
 <!-- 花花的 生成excel 格式 -->
     <package name="hhexcel" extends="struts-default" namespace="/hhexcel">
         <action name="JexcelAction" class="com.hangyuan.excel.JexcelAction">   
            <result name="excel" type="stream">
            <param name="contentType">application/vnd.ms-excel</param>
            <param name="inputName">is</param>
            <param name="contentDisposition">filename="export.xls"</param>
            <param name="bufferSize">1024</param>
            </result>
        </action>
   </package>   
    
</struts>    

2.action


package com.hangyuan.excel;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import com.opensymphony.xwork2.ActionSupport;

public class JexcelAction extends ActionSupport{
/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
/**
* 写excel文件
*http://blog.csdn.net/laliocat/article/details/50580020
*http://127.0.0.1:8080/ccc/hhexcel/JexcelAction.action
*/
	
	

/*
 * 分析:1 创建 WritableWorkbook 对象
 * 2.创建输出流对象
 * 3.创建表sheet
 * 
 */
	InputStream  is;
	
	
@Override
public String execute() throws Exception {
	System.out.println("--");
	method();
	return "excel";
}
public void method() throws IOException, WriteException{
	//1 创建 WritableWorkbook 对象
	//2.创建输出流对象
	ByteArrayOutputStream os = new ByteArrayOutputStream();
	WritableWorkbook wb = Workbook.createWorkbook(os);
	
	//创建Excel工作表 
	WritableSheet ws = wb.createSheet("通讯录", 0);//创建sheet
	
	ws.mergeCells(0, 0, 2, 1);//合并单元格(左列,左行,右列,右行)从第1行第1列到第2行第3列
	Label header = new Label(0, 0, "通讯录(191026班)", getHeader()); 
	ws.addCell(header);//写入头
	Label l = new Label(0, 2, "姓名", getTitle());//第3行
	ws.addCell(l);
	l = new Label(1, 2, "电话", getTitle());
	ws.addCell(l);
	l = new Label(2, 2, "地址", getTitle());
	ws.addCell(l);
	l = new Label(0, 3, "小祝", getNormolCell());//第4行
	ws.addCell(l);
	l = new Label(1, 3, "1314***0974", getNormolCell());
	ws.addCell(l);
	l = new Label(2, 3, "武汉武昌", getNormolCell());
	ws.addCell(l);
	l = new Label(0, 4, "小施", getNormolCell());//第5行
	ws.addCell(l);
	l = new Label(1, 4, "1347***5057", getNormolCell());
	ws.addCell(l);
	l = new Label(2, 4, "武汉武昌", getNormolCell());
	ws.addCell(l);
	ws.setColumnView(0,20);//设置列宽
	ws.setColumnView(1,20);
	ws.setColumnView(2,40);
	ws.setRowView(0,400);//设置行高
	ws.setRowView(1,400);
	ws.setRowView(2,500);
	ws.setRowView(3,500);
	ws.setRowView(4,500);
	

	//输出流
	
	wb.write();
	
	//关闭流
	
	wb.close();
	
	//outStream.close();
	System.out.println("写入成功!\n");
	
	 is = new ByteArrayInputStream(os.toByteArray());
}

/**
* 设置头的样式
* @return 
*/
public WritableCellFormat getHeader(){
WritableFont font = new WritableFont(WritableFont.TIMES, 24 ,WritableFont.BOLD);//定义字体
try {
font.setColour(Colour.BLUE);//蓝色字体
} catch (WriteException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
WritableCellFormat format = new WritableCellFormat(font);
try {
format.setAlignment(jxl.format.Alignment.CENTRE);//左右居中
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);//黑色边框
format.setBackground(Colour.YELLOW);//黄色背景
} catch (WriteException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return format;
}

/**
* 设置标题样式
* @return
*/
public WritableCellFormat getTitle(){
WritableFont font = new WritableFont(WritableFont.TIMES, 14);
try {
font.setColour(Colour.BLUE);//蓝色字体
} catch (WriteException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
WritableCellFormat format = new WritableCellFormat(font);

try {
format.setAlignment(jxl.format.Alignment.CENTRE);
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);
} catch (WriteException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return format;
}

/**
* 设置其他单元格样式
* @return
*/
public  WritableCellFormat getNormolCell(){//12号字体,上下左右居中,带黑色边框
WritableFont font = new WritableFont(WritableFont.TIMES, 12);
WritableCellFormat format = new WritableCellFormat(font);
try {
format.setAlignment(jxl.format.Alignment.CENTRE);
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);
} catch (WriteException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return format;
}
public InputStream getIs() {
	return is;
}
public void setIs(InputStream is) {
	this.is = is;
}



}

3. 访问  

*http://127.0.0.1:8080/ccc/hhexcel/JexcelAction.action

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值