在自动生成的Excel文件中添加颜色

时间:2019-05-16 07:56:07

标签: java excel colors bytearrayoutputstream

我对在Excel文件中添加颜色有疑问。 我想知道是否可以使用ByteArrayOutputStream方法来做到这一点。

我已经搜索了,但是没有找到任何东西。

/**
 * Export des incidents Jira
 * 
 * @return
 * @throws Exception
 */
@GET
@Path("exportJiraIncidents")
@Produces(MediaType.TEXT_PLAIN)
public Response exportJiraIncidents() throws Exception {

    // Get data base data
    final List<IncidentVo> data = 
jiraGroupamaResource.getJiraIncidents();

    // csv export
    final ByteArrayOutputStream outStream = new 
ByteArrayOutputStream();

    String line = "IssueId;Incident;Activité;DateCreation;Statut;"
+"RefIncJira;Intervenant;Titre;Gravité;resolution;" 
+ "updated;duedate;dateResolution;timeOriginalEstimate;timeEstimate;"
+ "timeSpent;workflow_id\r\n";

outStream.write(line.getBytes(Charset.forName("cp1252")));

    for (final IncidentVo vo : data) {

        line = addChampCsv(vo.getIssueId()) + 
addChampCsv(vo.getIncident()) + addChampCsv(vo.getActivite()) + 
addChampCsv(vo.getDateCreation())
                + addChampCsv(vo.getStatut()) + 
addChampCsv(vo.getRefIncJira()) + addChampCsv(vo.getIntervenant()) + 
addChampCsv(vo.getTitre())
                + addChampCsv(vo.getGravite()) + 
addChampCsv(vo.getResolution()) + addChampCsv(vo.getUpdated()) + 
addChampCsv(vo.getDueDate())
                + addChampCsv(vo.getDateResolution()) 
+ addChampCsv(vo.getTimeOriginalEstimate()) + 
addChampCsv(vo.getTimeEstimate())
                + addChampCsv(vo.getTimeSpent()) + 
addChampCsv(vo.getWorkflowId()) + "\r\n";

outStream.write(line.getBytes(Charset.forName("cp1252")));
    }

    return Response.ok(new 
ByteArrayInputStream(outStream.toByteArray())).header(STR_TYPE_HEADER, "attachment; filename=incidents.csv")
            .type(STR_TYPE_CSV).build();
}

'string line ='是文件的标题,循环中的所有get都将信息放入Excel文件中。 我只是不知道如何插入颜色。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

要从Java进行更高级的Excel工作表修改,您可能必须使用JXL, the Java Excel API

在那里,您可以很容易地进行着色,例如

Workbook.createWorkbook(outputStream);
workbook.createSheet(sheetName, 0);

WritableCell cell = sheet.getWritableCell(0,0);

WritableCellFormat coloredCellFormat = new WritableCellFormat();

coloredCellFormat.setBackground(Colour.RED);

cell.setCellFormat(newFormat);

workbook.write(); // important to use
workbook.close();

如本例所示,JXL允许您写入任何OutputStream。因此,您应该可以在Web服务中使用它。