Для JAVA-приложения, которое перетаскивает данные вместе из некоторых источников и делает само некоторое вычисление, мы хотим предложить пользователям возможность использовать их собственные строки формата и предпочли бы синтаксис строки формата, который они знают от Excel (например. "$ "#,###.,0
) который, оказывается, то же, используемое в .NET и Analysis Services.
Самой близкой вещью использовать это, которое я нашел в Java, является DecimalFormat, который испытывает недостаток в некоторых функциях (например, тысячи и миллионы форматирования путем помещения тысяч разделителя в конец, числа с плавающей точкой, NaN и бесконечность отображены по-другому, и т.д., и вероятно в зависимости от локали, будут некоторыми дополнительными небольшими различиями.
На данный момент просто числовое форматирование было бы достаточно. Возможно, дата и строковое форматирование станут требованием в будущем.
Существует ли библиотека, или мы должны были бы разработать это сами?
Я не могу предположить, что мы - единственные, у кого есть эта проблема.
ПОИ, как предложено Рождеством M, кажется, не предлагает решения. Какие-либо другие идеи?
Есть ли библиотека, или нам придется ее разработать самостоятельно?
Проверьте ExtenXLS , Java Spreadsheet SDK или его версию с открытым исходным кодом OpenXLS (под GPLv. 3). О OpenXLS:
OpenXLS - это версия с открытым исходным кодом ExtenXLS - ведущая Java Пакет SDK для электронных таблиц.
OpenXLS - это безопасный способ встраивания расширенная электронная таблица Java функциональность в ваших приложениях.
С тем же кодом промышленной прочности. как ExtenXLS3, OpenXLS - надежный исполнитель, который дает вашу Java приложения электронная таблица функциональность, необходимая вашим пользователям, и тогда немного!
Предоставьте своим пользователям бизнес-аналитику заявки и отчеты в формате они знают и любят, в комплекте с Диаграммы, изображения, код VB и все функции Excel в неизменном виде.
Я быстро взглянул на API и обнаружил FormatHandle # convertFormatString (String)
, который преобразует строку формата в стиле Excel в строку формата Java .
Я не знаю, будет ли он соответствовать вашим ограничениям, но это определенно серьезный продукт.
Для Java не существует библиотеки, которая бы выполняла такой анализ. Обратный инжиниринг Excel для покрытия всех тестовых случаев потребует много времени для такого нишевого продукта.
Поскольку .net преобразует 100% ваших тестовых примеров, я предлагаю вам сосредоточиться на вызове .Net в вашем приложении Java .
(Добавление еще одного ответа, поскольку вы ссылаетесь на мой первый в своем вопрос сейчас)
Похоже, что такой установки не существует. Одна вещь, которую вы могли бы изучить, - это создать ее самостоятельно. Вы могли бы использовать JavaCC , чтобы выразить эти форматы самостоятельно и как они в конечном итоге отображаются на типичные объекты Java. JavaCC определенно сможет дать вам возможность использовать ваши собственные строки формата.
Возможно, это подойдет как реализация NumberFormat
для десятичного формата, включая язык и прочее:
http: / /www.jdocs.com/javase/7.b12/java/text/DecimalFormat.html
http://www.freshsources.com/Format.htm
http://www.java2s.com/Code /Java/I18N/JavaI18NFormatNumberFormat.htm
Вы можете настроить вывод decimalFormat, используя свои собственные символы DecimalFormatSymbols. Можно установить строку, используемую для представления NaN и многого другого.
http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormatSymbols.html
для формата даты:
http://javatechniques.com/blog/dateformat- и-simpledateformat-examples /
для обоих в текстовом формате JFormattedTextField
http://www.java2s.com/Code/Java/Swing-JFC/Formatted-TextField.htm
http: //www.java2s.com/Code/Java/Development-Class/MakecustomInputTextFormatterinJava.htm http://www.java2s.com/Code/Java/Development-Class/Formatter.htm http:// www.java2s.com/Code/Java/Development-Class/ApplyamasktoString.htm