您的位置:首页 > 数据库

SQL语句查询结果转excel

2009-01-12 11:55 435 查看
//直接输出到servlet可以不用在硬盘上写文件

public class SQLtoExcel extends HttpServlet {
public void init() throws ServletException
{
}

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{

HSSFRow row=null;
HSSFCell cell = null;

try{
String title = req.getParameter("title");
String hql = req.getParameter("hql");
if(hql!=null&&title!=null){

//System.out.println(+"==========title");
BaseDAO bd = new BaseDAO();

// 创建新的Excel 工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值

//HSSFSheet sheet=workbook.getSheetAt(0);//得到工作表
HSSFSheet sheet = workbook.createSheet("查询结果");
sheet=workbook.getSheetAt(0);//得到工作表
String titles[] = new String(title.getBytes(),"UTF-8").split(";");

int cols = titles.length;//列数

// 在索引0的位置创建行(最顶端的行)

row = sheet.createRow(0);

for(int i=0;i<titles.length;i++){

//在索引0的位置创建单元格(左上端)
cell = row.createCell(i);
// 在单元格中输入一些内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println(titles[i]);
cell.setCellValue(titles[i]);
}

List l = bd.querySQL(hql);
int rows = l.size();//行数
System.out.println(l.size()+"=======");

for(int i=1;i<rows;i++){
// 在索引0的位置创建行(最顶端的行)

row = sheet.createRow(i);
for(int j=0;j<cols;j++){
Object[] obj = (Object[])l.get(i);
String str = String.valueOf(obj[j]);

//在索引0的位置创建单元格(左上端)

cell = row.createCell(j);
// 在单元格中输入一些内容

cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println("======="+str);

cell.setCellValue(str);
}
}

//取得输出流
OutputStream out = res.getOutputStream();
//清空输出流
res.reset();

//设置响应头和下载保存的文件名
res.setHeader("content-disposition","attachment;filename="+"Excel.xls");
//定义输出类型
res.setContentType("APPLICATION/msexcel");

workbook.write(out);
out.close();

res.flushBuffer();//强行将响应缓存中的内容发送到目的地

}

}catch(Exception e) {

e.printStackTrace();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: