利用公司所学作为简单示例:
(简单实现逻辑为将文件生成在项目中,当用户下载后将文件重新删除)
以下程序为Java中Excel的属性配置,参数配置,数据配置等
public IResData exportGzrwqkaxmtjData(final IReqData req) throws SwordBaseCheckedException, IOException {
final IResData res = new SwordRes();
//获取窗体的值,引入实体类
final Map<String, String> gzrwqkaxmtjForm = req.getFormData("gzrwqkaxmtjForm");
//获取所需要导入Excel表中的数据
final List<Map<String, Object>> information = (List<Map<String, Object>>) SwordServiceUtils.callService("DSJYPT.XMGL.GZRW.QKAXMTJ", gzrwqkaxmtjForm);
//定义Excel中表格的数据格式
final List<Map<String, Object>> excelList = new ArrayList<Map<String, Object>>();
//定义Excel的相关信息
final Map<String, Object> excel = new HashMap<String, Object>();
excel.put("title", "标题名称");
excel.put("sheet", "表名");
//定义列名和列值
final String[] columns = {"字段名"};
final String[] fields = {"字段值"};
excel.put("columns", columns);
excel.put("fields", fields);
excel.put("data", information);
excelList.add(excel);
final HSSFWorkbook workbook = new HSSFWorkbook();
//处理数据,完成整体Excel的生成和设置
this.exportExcel(workbook, excelList);
//下面的代码功能为将文件生成放在项目中
final String path = this.getHttpReq().getSession().getServletContext().getRealPath("路径");
final String uuid = UUID.randomUUID().toString().replace("-", "");
final FileOutputStream fos = new FileOutputStream(path + "/" + uuid + ".xls");
workbook.write(fos);
fos.flush();
fos.close();
res.addAttr("fileName", uuid);
return res;
}
以下代码为配置Excel的表格样式,数据填入等处理操作
public HSSFWorkbook exportExcel(HSSFWorkbook workbook, List<Map<String, Object>> excelList) {
for (Map<String, Object> excel : excelList) {
int k = 0;
final String sheetName = (String) excel.get("sheet");
HSSFSheet sheet = null;
if (GyUtils.isNull(sheetName)) {
sheet = workbook.createSheet();
} else {
try {
sheet = workbook.createSheet(sheetName);
} catch (Exception e) {
sheet = workbook.createSheet();
}
}
final String title = (String) excel.get("title");
final String[] columns = (String[]) excel.get("columns");
//开始填入数据
final String[] fields = (String[]) excel.get("fields");
//设置标题
if (!GyUtils.isNull(title)) {
final HSSFCellStyle titleStyle = workbook.createCellStyle();
final HSSFFont titleFont = workbook.createFont();
titleFont.setFontName("黑体");
titleFont.setFontHeightInPoints((short) 14);
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
titleStyle.setFont(titleFont);
// 设置单元格格式居中
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
final int length = fields.length;
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, length - 1 >= 0 ? length - 1 : 0));
final HSSFRow rowTitle = sheet.createRow(k);
rowTitle.setHeight((short) (14 * 40));
final HSSFCell cell = rowTitle.createCell(0);
cell.setCellValue(title);
cell.setCellStyle(titleStyle);
k++;
}
final HSSFCellStyle cellStyle = workbook.createCellStyle();
// 设置单元格格式居中
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//设置标题
if (!GyUtils.isNull(columns)) {
final HSSFRow hssfRow = sheet.createRow(k);
k++;
for (int i = 0; i < columns.length; i++) {
final HSSFCell headCell = hssfRow.createCell(i);
headCell.setCellValue(columns[i]);
headCell.setCellStyle(cellStyle);
sheet.setColumnWidth(i, 80 * 80);
}
}
//添加数据
final List<?> listData = (List<?>) excel.get("data");
for (Object vo : listData) {
final HSSFRow row = sheet.createRow(k);
k++;
for (int j = 0; j < fields.length; j++) {
final HSSFCell headCell = row.createCell(j);
String value = "";
try {
value = GyUtils.getValueByKey(vo, fields[j]);
} catch (SwordBaseCheckedException e) {
value = "";
}
headCell.setCellValue(value);
headCell.setCellStyle(cellStyle);
}
}
}
return workbook;
}
以下为文件的下载事件
public IResData downLoadFile(final IReqData req) throws SwordBaseCheckedException, IOException {
final IResData res = new SwordRes();
//获取到文件名
final String fileName = (String) req.getAttr("fileName");
//到指定路径下获取文件
final File file = new File(this.getHttpReq().getSession().getServletContext().getRealPath("路径") + "/" + fileName + ".xls");
//下载文件
this.downLoad(file, "文件名.xls");
//删除生成的文件
file.delete();
return res;
}
文章中所需Jar包可在网络上自行下载,本文不提供jar包的相关数据。整体流程为上面所叙述的,若代码看不懂,可根据注解提供参考思路。