public class SimpleExcelWrite {
public void createExcel(OutputStream os) throws WriteException,IOException{
// 创建工作薄
WritableWorkbook workbook=Workbook.createWorkbook(os);
// 创建新的一页
WritableSheet sheet=workbook.createSheet("First Sheet", 0);
// 创建要显示的具体内容
Label xuexiao=new Label(0,0,"学校");
sheet.addCell(xuexiao);
Label zhuanye=new Label(1,0,"专业");
sheet.addCell(zhuanye);
Label jingzhengli=new Label(2,0,"竞争力");
sheet.addCell(jingzhengli);
Label qinghua=new Label(0,1,"清华大学");
sheet.addCell(qinghua);
Label jisuanji=new Label(1,1,"计算机专业");
sheet.addCell(jisuanji);
Label gao=new Label(2,1,"高");
sheet.addCell(gao);
Label beida=new Label(0,2,"北京大学");
sheet.addCell(beida);
Label falv=new Label(1,2,"法律专业");
sheet.addCell(falv);
Label zhong=new Label(2,2,"中");
sheet.addCell(zhong);
Label ligong=new Label(0,3,"北京理工大学");
sheet.addCell(ligong);
Label hangkong=new Label(1,3,"航空专业");
sheet.addCell(hangkong);
Label di=new Label(2,3,"低");
sheet.addCell(di);
// 把创建的内容写入到输出流中,并关闭输出流
workbook.write();
workbook.close();
os.close();
}
}
<%
String fname="学校专业竞争力情况";
OutputStream os=response.getOutputStream();
response.reset();
//下面是对中文文件名的处理
response.setCharacterEncoding("UTF-8");//设置相应内容的编码格式
fname=java.net.URLEncoder.encode(fname,"UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+ new String(fname.getBytes("UTF-8"),"GBK")+".xls");
response.setContentType("application/msexel");//定义输出类型
SimpleExcelWrite sw=new SimpleExcelWrite();
sw.createExcel(os);
%>
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class SimpleExcelView extends AbstractExcelView {
/**
* 生成excel视图,可用excel工具打开或者保存 单行表头,简单模板
* 例子可参考:问题反馈_excel导出
*/
public void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 设置文件名
// 创建sheet
HSSFSheet sheet = workbook.createSheet();
// 设置样式
HSSFCellStyle hssCellStyle = getGeneralCellStyle(workbook);
// 处理表格头
String[] headArr = (String[]) model.get("head");
sheet.setDefaultColumnWidth(headArr.length);
HSSFCell cell = null;
int colNum = headArr.length;
for (int i = 0; i < colNum; i++) {
cell = getCell(sheet, 0, i);
setText(cell, headArr[i]);
cell.setCellStyle(hssCellStyle);
// 设置列宽
sheet.setColumnWidth(i, 5000);
}
// 处理数据
List<List<Object>> data = (List<List<Object>>) model.get("data");
List<Object> row = null;
int rowNum = data.size();
for (int i = 0; i < rowNum; i++) {
row = data.get(i);
for (int j = 0; j < colNum; j++) {
cell = getCell(sheet, i + 1, j);
setText(cell, "" + row.get(j));
cell.setCellStyle(hssCellStyle);
}
}
}
/**
* 设置样式
*
* @param cell
* @param workbook
*/
public HSSFCellStyle getGeneralCellStyle(HSSFWorkbook workbook) {
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setLocked(false);
// 设置Excel中的边框
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
return cellStyle;
}
}