package oa.common.utils
import java.io.OutputStream
import java.util.List
import javax.servlet.http.HttpServletResponse
import org.apache.struts2.ServletActionContext
import java.lang.reflect.Field
import jxl.Workbook
import jxl.format.Alignment
import jxl.format.Border
import jxl.format.BorderLineStyle
import jxl.format.VerticalAlignment
import jxl.write.Label
import jxl.write.WritableCellFormat
import jxl.write.WritableFont
import jxl.write.WritableSheet
import jxl.write.WritableWorkbook
/***
* @author lsf
*/
public class ExportExcel {
/***************************************************************************
* @param fileName EXCEL文件名称
* @param listTitle EXCEL文件第一行列标题集合
* @param listContent EXCEL文件正文数据集合
* @return
*/
public final static String exportExcel(String fileName,String[] Title, List<Object>listContent) {
String result="系统提示:Excel文件导出成功!"
// 以下开始输出到EXCEL
try {
//定义输出流,以便打开保存对话框______________________begin
HttpServletResponse response=ServletActionContext.getResponse()
OutputStream os = response.getOutputStream()// 取得输出流
response.reset()// 清空输出流
response.setHeader("Content-disposition", "attachmentfilename="+ new String(fileName.getBytes("GB2312"),"ISO8859-1"))
// 设定输出文件头
response.setContentType("application/msexcel")// 定义输出类型
//定义输出流,以便打开保存对话框_______________________end
/** **********创建工作簿************ */
WritableWorkbook workbook = Workbook.createWorkbook(os)
/** **********创建工作表************ */
WritableSheet sheet = workbook.createSheet("Sheet1", 0)
/** **********设置纵横打印(默认为纵打)、打印纸***************** */
jxl.SheetSettings sheetset = sheet.getSettings()
sheetset.setProtected(false)
/** ************设置单元格字体************** */
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10)
WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD)
/** ************以下设置三种单元格样式,灵活备用************ */
// 用于标题居中
WritableCellFormat wcf_center = new WritableCellFormat(BoldFont)
wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN)// 线条
wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE)// 文字垂直对齐
wcf_center.setAlignment(Alignment.CENTRE)// 文字水平对齐
wcf_center.setWrap(false)// 文字是否换行
// 用于正文居左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont)
wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN)// 线条
wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE)// 文字垂直对齐
wcf_left.setAlignment(Alignment.LEFT)// 文字水平对齐
wcf_left.setWrap(false)// 文字是否换行
/** ***************以下是EXCEL开头大标题,暂时省略********************* */
//sheet.mergeCells(0, 0, colWidth, 0)
//sheet.addCell(new Label(0, 0, "XX报表", wcf_center))
/** ***************以下是EXCEL第一行列标题********************* */
for (int i = 0i <Title.lengthi++) {
sheet.addCell(new Label(i, 0,Title[i],wcf_center))
}
/** ***************以下是EXCEL正文数据********************* */
Field[] fields=null
int i=1
for(Object obj:listContent){
fields=obj.getClass().getDeclaredFields()
int j=0
for(Field v:fields){
v.setAccessible(true)
Object va=v.get(obj)
if(va==null){
va=""
}
sheet.addCell(new Label(j, i,va.toString(),wcf_left))
j++
}
i++
}
/** **********将以上缓存中的内容写到EXCEL文件中******** */
workbook.write()
/** *********关闭文件************* */
workbook.close()
} catch (Exception e) {
result="系统提示:Excel文件导出失败,原因:"+ e.toString()
System.out.println(result)
e.printStackTrace()
}
return result
}
}
测试:
/**
* 导出excel
* @return
*/
public String excelPage(){
ExportExcel excel=new ExportExcel()
String str=""
try {
str = new String(getHTTP.getRequest().getParameter("wineOrg.orgName").getBytes("iso8859-1"),"UTF-8")
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
wineOrg.setOrgName(str)
List<Object>li=service.exportExcel(wineOrg)
String[] Title={"机构ID","会员编号","类别","名称","省ID","省名称","城市ID","城市名称","详细地址","联系人","性别","联系手机","联系电话","传真","邮箱","QQ","生日","积分","客户等级","现金账户余额","结算方式","客户类型","购买次数","购买支数","创建人ID","创建人姓名","create_time","del","STS","备注","负责人ID","负责人姓名","审核标识","审核人ID ","审核人姓名","审核日期","分配人ID","分配人姓名","分配日期","修改人ID","修改人姓名 ","修改时间"}
excel.exportExcel("客户资料信息.xls",Title, li)
return SUCCESS
}
如下参考:
1.首先,我们打开桌面,双击鼠标左键打开电脑中的Excel表格。
2.然后我们选择需要更改单元格格式的列,如下图所示。
3.然后在界面顶部的菜单栏中选择数据选项,然后单击底部的排序选项。
3.然后单击separator选项,然后单击next选项。
4.然后我们选择逗号,下拉逗号,然后单击next。
5.我们选择单元格上的绿色三角形,可批量转换为文本格式。