我有这种导出excel文档的方法,但是当我打开excel时,我得到了这种带有奇怪字符和符号的文件,没有格式;有人可以指导我如何解决这个问题吗?
这是我的方法,谢谢帮助;我仍在努力。
public void CrearExcel() throws SQLException {
//Map param = new HashMap();
try {
Connection conn = Conexion.getConnTest();
PreparedStatement ps = null;
ResultSet rs = null;
String sql =
"SELECT NUM_FICHA, ASPIRANTE.AP_PATERNO, ASPIRANTE.AP_MATERNO, ASPIRANTE.NOMBRE FROM REFERENCIA INNER JOIN ASPIRANTE ON REFERENCIA.FK_ASPIRANTE_ID_ASPIRANTE = ASPIRANTE.ID_USUARIO WHERE NUM_FICHA IS NOT NULL";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new sheet");
Row rowhead = sheet.createRow(0);
rowhead.createCell(0).setCellValue("NUMFICHA");
rowhead.createCell(1).setCellValue("APELLIDO PATERNO");
rowhead.createCell(2).setCellValue("APELLIDO MATERNO");
rowhead.createCell(3).setCellValue("NOMBRE");
rowhead.createCell(4).setCellValue("EXAMEN1");
rowhead.createCell(5).setCellValue("EXAMEN2");
int index = 1;
while (rs.next()) {
Row row = sheet.createRow(index);
row.createCell(0).setCellValue(rs.getInt(1));
row.createCell(1).setCellValue(rs.getString(2));
row.createCell(2).setCellValue(rs.getString(3));
row.createCell(3).setCellValue(rs.getString(4));
row.createCell(4).setCellValue("");
row.createCell(5).setCellValue("");
index++;
}
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
hwb.write(outByteStream);
byte[] outArray = outByteStream.toByteArray();
response.setHeader("Content-Disposition",
"attachment; filename=testxls.xls");
response.setContentType("application/vnd.ms-excel");
response.flushBuffer();
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}