Criando gráficos a partir do formato de dados personalizados no Excel 2010

0

Estou definindo o formato de dados personalizados por meio do Apache POI. Eu sei que preciso usar a seguinte construção:

DataFormat data = this.workbook.createDataFormat();
cellStyle.setDataFormat(data.getFormat("YY:DDD:HH:MM:SS"));

Encontrei uma referência na documentação do Apache POI sobre os formatos .

Os dados que eu preciso para formatar representam a data e a hora, por exemplo:

00:000:00:15:00 
YY:DDD:HH:MM:SS

Até agora funciona tudo bem. Clique com o botão direito do mouse na célula do Excel, verificando o formato da célula - > personalizado yy: ddd: hh: mm: ss . No entanto, não consigo criar um gráfico desse formato de hora personalizado. Selecionando esses dados:

task   | time
-------|----------------
task 1 | 00:000:00:15:00
task 2 | 00:000:00:20:00
task 3 | 00:000:00:10:00

e a escolha da opção Inserir gráfico de barras gera alguns detalhes. Existe uma maneira de fazer o gráfico funcionar, sem criar dados adicionais (como contar o total de segundos e exibir os valores de segundos)?

    
por user1581900 12.10.2012 / 12:13

1 resposta

1

O Excel lida com datas e horas como números de série em que o número é os dias desde janeiro de 1900, e o decimal é uma parte fracionária de um dia de 24 horas (para mais informações, consulte Data / hora do Excel do CPearson . Portanto, no Excel, 10/12/2012 10:20:07 = 41194.4306392361 . Para nos ajudar a interagir com o Excel, ele reconhece datas / horas em determinados formatos padrão (como O tradicional, US MM / DD / AAAA HH: MM: SS) O problema que você parece estar se deparando é que o formato de data (AA: DDD: HH: MM: SS) não é reconhecido pelo Excel como uma data / Você tem duas soluções:

  1. Exporte sua data do Apache em um formato "compatível com o Excel"; ou
  2. Converta seu formato personalizado em um formato "compatível com o Excel" no Excel usando fórmulas.

Se você usa o número 2 e o DDD no formato de data personalizado é literalmente o dia do ano (por exemplo, 10/12/2012 é o 286º dia do ano), provavelmente será necessário que o VBA gerencie a conversão para a combinação apropriada de dia / mês.

    
por 12.10.2012 / 16:36