Создайте Excel Charts in Java

Я использовал ПОИ Apache, чтобы создать и изменить электронные таблицы Excel, но я задаюсь вопросом, существует ли путь (даже если это с другой библиотекой, предпочтительно открытый исходный код) составлять таблицы в Excel в новом xlsx формате. Похоже, что ПОИ имеет HSSFChart, но я полагаю, что это для более старого формата (исправьте меня, если я неправ). Кто-либо использовал решение для Java составить таблицы в Excel?

15
задан Jeff Storey 28 May 2013 в 18:23
поделиться

3 ответа

Можно заранее создать диаграммы и использовать POI для записи значений, где диаграмма может их прочитать.

Это то, чем я закончил, и это отлично работает.

Убедитесь, что если у вас есть формулы в ваших данных, вы просматриваете каждую ячейку в электронной таблице и оцениваете их перед записью на диск.

5
ответ дан 1 December 2019 в 05:16
поделиться

В пакете roxygen есть функция Карри.
Найдено через этот разговор в архиве почты R.

-121--1845240-

Обе эти функции фактически существуют в roxygen пакетов ( см. исходный код здесь ) от Питера Даненберга (первоначально был основан на решении Байрона Эллиса на R-Help ):

Curry <- function(FUN,...) {
  .orig = list(...);
  function(...) do.call(FUN,c(.orig,list(...)))
}

Compose <- function(...) {
  fs <- list(...)
  function(...) Reduce(function(x, f) f(x),
                       fs,
                       ...)
}

Обратите внимание на использование функции Reduce , которая может быть очень полезна при выполнении функционального программирования в R. См.? Reduct для получения более подробной информации (которая также охватывает другие функции, такие как Map и Filter ).

И ваш пример Карри (немного отличается в этом использовании):

> library(roxygen)
> p <- Curry(paste, collapse="")
> p(letters[1:10])
[1] "abcdefghij"

Ниже приведен пример использования Compose (применение трех различных функций к буквам):

> Compose(function(x) x[length(x):1], Curry(paste, collapse=""), toupper)(letters)
[1] "ZYXWVUTSRQPONMLKJIHGFEDCBA"

И ваш последний пример будет работать так:

> aggregate(df[,"t"], df["l"], Compose(Curry(paste, collapse=""), toupper))
  l    x
1 1  ABG
2 2 DEFH
3 3  CIJ

Наконец, вот способ сделать то же самое с plyr (также можно легко сделать с по или агрегат , как уже показано):

> library(plyr)
> ddply(df, .(l), function(df) paste(toupper(df[,"t"]), collapse=""))
  l   V1
1 1  ABG
2 2 DEFH
3 3  CIJ
-121--1845239-

Я предпочитаю использовать JExcel для POI (API проще), но кажется, что они также не поддерживают 2007 форматы.

0
ответ дан 1 December 2019 в 05:16
поделиться

Я не использовал Java-версию Aspose Cells, но я использовал .NET-версию, и она действительно хороша. Там говорится, что она может открывать и сохранять XLSX. Правда, она не бесплатная и не с открытым исходным кодом.

1
ответ дан 1 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: