JXL复制Excel模板,生成了却打不开

FinalKing 2007-12-04 09:12:49
package report;

import java.beans.Beans;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.SmartUpload;

import jxl.Workbook;
import jxl.format.BorderLineStyle;
import jxl.write.Border;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import dabean.DataBean;
import java.sql.*;

public class JxlExcel extends HttpServlet {

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
DataBean dataBean;
private ResultSet rs;
ResultSetMetaData rm;
Statement stm;
int colcount;
public JxlExcel(){
dataBean = null;
rs = null;
rm = null;
colcount = 0;
try
{
dataBean = (DataBean)Beans.instantiate(getClass().getClassLoader(), "dabean.DataBean");
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// /**
// * setContentType设置MIME类型,Acrobat
// * PDF文件为"application/pdf",WORD文件为:"application/msword",
// * EXCEL文件为:"application/vnd.ms-excel"。
// */
// response.setContentType("application/vnd.ms-excel");
// /**
// * setHeader设置打开方式,具体为:inline为在浏览器中打开,attachment单独打开。
// */
response.setHeader("Content-disposition","attachment; filename=test1.xls");
response.setContentType("application/msexcel");
String tablehead = request.getParameter("title");//表头
String fieldvalues = request.getParameter("fieldnames");//显示数据语句
try {
String root_path=getServletContext().getRealPath("/")+"Defaultmodel/";
String url = root_path+"wsaj.xls";//模板位置
String str_head="";
String str_field="";
int rownum=0;
int colnum=0;
Workbook wb = Workbook.getWorkbook(new File(url));
ByteArrayOutputStream targetFile = new ByteArrayOutputStream();
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);
//处理自动换行、表格样式
WritableCellFormat cellFormat=new WritableCellFormat();
cellFormat.setAlignment(jxl.format.Alignment.LEFT);
cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
cellFormat.setWrap(true);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
WritableSheet wws = wwb.getSheet(0);
stm = dataBean.getStatement();
rs = stm.executeQuery(fieldvalues);
rm = rs.getMetaData();
colcount = rm.getColumnCount();
if(rs.next()){
rownum++;
for(int i = 0; i < colcount;i++)
{
str_field = new String(rs.getString(i + 1).trim().getBytes(), "GB2312");
Label fieldvalue = new Label(i,rownum, str_field);
fieldvalue.setCellFormat(cellFormat);
wws.addCell(fieldvalue);
}
}

wwb.write();
wwb.close();
wb.close();
FileOutputStream fos = new FileOutputStream(root_path+"temp/test1.xls");
targetFile.writeTo(fos);
targetFile.close();
out.flush();
out.close();
//RequestDispatcher requestDispatcher=request.getRequestDispatcher("/jsp/testbean.jsp");
//requestDispatcher.forward(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}

}


我想要生成了 了数据的同时 打开 这个 excel 数据都生成了 ,就是打开的excel是不可读的数据,总之打开了没数据,保存下来也一样,在网上的例子都看了,我不知道哪出了问题!急救阿。。。。。
...全文
487 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
racy2007 2009-01-19
  • 打赏
  • 举报
回复
我今天也遇到了这个问题,谁有解?
FinalKing 2007-12-05
  • 打赏
  • 举报
回复
没人帮帮我么~。。。。。。。。。。。
Sunny319 2007-12-05
  • 打赏
  • 举报
回复
生成了数据的同时打开 这个excel。
在生成文件过程中,这个文件是独占得访问方式。
你在程序生成完了再去看看吧。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧