在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