在struts中应用JXL读写EXCEL参考,只不过我的操作有点不同,
我要实现的是将页面上显示的表格数据导出到EXCEL中,由于表头过于复杂,我不想在EXCEL中直接写,就想先把表头写好,在导出的时候,先去读这个文
件,然后继续填充数据,实现方法如下: ?
? ?
? package ?
com.lonwin.struts.action; ?
? ?
? import ? java.io.File; ?
? import ? java.io.FileOutputStream; ?
? import ?
java.io.OutputStream; ?
? ?
? import ? java.util.ArrayList; ?
? ?
? import ? javax.servlet.ServletOutputStream; ?
?
import ? javax.servlet.http.HttpServletRequest; ?
? import ?
javax.servlet.http.HttpServletResponse; ?
? ?
? import ?
org.apache.struts.action.Action; ?
? import ?
org.apache.struts.action.ActionForm; ?
? import ?
org.apache.struts.action.ActionForward; ?
? import ?
org.apache.struts.action.ActionMapping; ?
? ?
? import ?
com.lonwin.struts.form.ShuiXiDataCollectionBean; ?
? ?
? ?
? //import ? com.lonwin.util.SaveParamBean; ?
? ?
? import ?
jxl.*; ?
? ?
? import ? jxl.write.*; ?
? import ?
jxl.write.Number; ?
? ?
? ?
? ?
? /** ? ?
?
? * ? created ? on ? 04-29-2004 ?
? ? * ? ?
? ? * ?
功能:实现导出EXCEL功能 ?
? ? * ? @struts:action ? validate="true" ?
?
? */ ?
? public ? class ? ExcelexportAction ? extends ? Action ? {
?
? ?
? // ? ------------------------------------------ ?
Instance ? Variables ?
? private ? static ? final ? String ?
CONTENT_TYPE ? = ? "application/vnd.ms-excel"; ? ?
? // ?
-------------------------------------------- ? Methods ?
? ?
?
/** ? ?
? ? * ? Method ? execute ?
? ? * ? @param ?
ActionMapping ? mapping ?
? ? * ? @param ? ActionForm ? form ?
? ? * ? @param ? HttpServletRequest ? request ?
? ? * ? @param
? HttpServletResponse ? response ?
? ? * ? @return ?
ActionForward ?
? ? * ? @throws ? Exception ?
? ? */ ?
? public ? ActionForward ? execute( ?
? ActionMapping ?
mapping, ?
? ActionForm ? form, ?
? HttpServletRequest ?
request, ?
? HttpServletResponse ? response) ?
? throws ?
Exception ? { ?
? ?
?
response.setContentType(CONTENT_TYPE); ?
? ArrayList ? array ? = ?
new ? ArrayList(); ?
? array ? = ?
(ArrayList)request.getSession().getAttribute("collectionsPWL"); ?
?
?
? System.out.println("得到记录"+array.size()+"个 ? !"); ?
?
?
? ?
? ?
? //读excel文件 ?
? ?
? try ? { ?
? ?
? ?
? File ? tempFile=new ?
File("C:\\shuibao\\WorkProgram\\ExcelHeader\\shuixiPWL.xls"); ?
?
?
? ?
? ?
? // 创建只读的Excel工作薄的对象 ?
?
? ? ? ? Workbook ? wb ? = ? Workbook.getWorkbook(tempFile); ? ?
? ?
? // 创建可写入的Excel工作薄对象 ?
? // OutputStream ? os ? = ?
new ? FileOutputStream(targetfile); ?
? // ? ? ? ?
WritableWorkbook ? rwb ? = ? Workbook.createWorkbook(targetfile,wb); ?
? ?
? ServletOutputStream ? os ? = ?
response.getOutputStream(); ?
? WritableWorkbook ? rwb ? = ?
Workbook.createWorkbook(os,wb); ?
? ?
? // 读取第一张工作表 ?
? ? ? ? ? WritableSheet ? ws ? = ? rwb.getSheet(0); ? ?
? ?
? ?
? //获得第一张工作表的第一个单元格对象 ?
? WritableCell ? wc ?
= ? ws.getWritableCell(0, ? 0); ?
? ?
?
System.out.println("读出值了吗?"+wc.getContents()+" ? ? !"); ?
? ?
? ?
? ?
? // 向表中添加记录 ?
? int ? rows=1;//定义默认的行 ?
? for(int ? i=0;i<array.size();i++){ ?
?
ShuiXiDataCollectionBean ? collections ?
=(ShuiXiDataCollectionBean)array.get(i); ?
? // 水系名称 ?
?
Label ? lable0 ? = ? new ? Label(0,rows,collections.getName()); ? ? ?
?
? ws.addCell(lable0); ?
? rows=rows+1; ?
?
} ?
? ?
? ?
? ?
? ?
? //
写入Excel对象 ?
? rwb.write(); ?
? ?
? //
关闭可写入的Excel对象 ?
? rwb.close(); ?
? // 关闭只读的Excel对象 ?
? wb.close(); ?
? ?
? ?
? ?
? ?
? } ? catch ? (Exception ? e) ? { ?
? ? ? ? throw ? new ?
Exception("坏了,文件没找着呀~~!"); ?
? } ? ?
? ?
?
return ? new ? ActionForward(mapping.getInput()); ?
? } ?
?
?
? }
?
?
//////////////////////////////////////////////////////////////////////////////
http://topic.csdn.net/t/20040508/11/3041188.html