import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* 用户信息导出类
*
* @author 寇航艇
*
*/
public class UseServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
// 封装页面的参数
UserInfo bo = new UserInfo();
// 调用业务层
ServletContext servletContext = this.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
IUsersBus userinfo= (IUsersBus)ctx.getBean("userinfo");
List<UserInfo> list = certUseDS.queryUses(bo, 50000, 1).getRows();
OutputStream outs = response.getOutputStream();
BufferedWriter bw = null;
OutputStreamWriter osw = null;
String fileName = "excel" + String.valueOf(System.currentTimeMillis()).substring(9, 13) + ".xls";
String headStr = "attachment; filename=\"" + fileName + "\"";
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", headStr);
osw = new OutputStreamWriter(outs, "GB2312");
createExcel(list,outs);
}
/**
* 将读取到的文件重新写入新的文件
* @param output
*
* @param bw
*/
public void createExcel( List<UserInfo> list, OutputStream output)
{
Workbook workBook = null;
Row row = null;
Cell cell = null;
try
{
// 创建一个工作簿
// 生成xlsx格式
// workBook = new XSSFWorkbook();
// 生成xls格式
workBook = new HSSFWorkbook();
// 创建工作表
Sheet sheet = workBook.createSheet("users");
// 创建excel表头
createExcelHead(sheet.createRow(0));
// 将数据写入excel
for (int i = 0; i < list.size(); i++)
{
// 创建一行
row = sheet.createRow(i + 1);
int cellNo = 0;
// 循环创建单元格
cell = row.createCell(cellNo++);
// 给单元格设值
cell.setCellValue(list.get(i).getUserName());
cell = row.createCell(cellNo++);
cell.setCellValue(list.get(i).getBirth());
cell = row.createCell(cellNo++);
cell.setCellValue(list.get(i).getCreatedTime());
cell = row.createCell(cellNo++);
cell.setCellValue(list.get(i).getCounty());
}
// 将内容写入Excel
workBook.write(output);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
output.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/**
* 创建excel表头
*
* @param row
* 行
*/
private void createExcelHead(Row row)
{
Cell cell;
int cellNum = 0;
// 设置标题
cell = row.createCell(cellNum++);
cell.setCellValue("用户名");
cell = row.createCell(cellNum++);
cell.setCellValue("生日");
cell = row.createCell(cellNum++);
cell.setCellValue("注册日期");
cell = row.createCell(cellNum++);
cell.setCellValue("籍贯");
}
}