- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题非常具体:使用 Apache POI,我想创建单元格(完成),为其分配数字格式(完成),并设置格式的区域设置(卡在这里)。
代码如下所示:
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
Sheet sheet = workbook.createSheet();
Row row = sheet.createRow(1);
Cell cell = row.createCell(0);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(8); //currency with thousands separator and two decimal places after period
cell.setCellValue(123456.78);
//??? how to set custom locale for the cell's number format?
我试图用自定义区域设置解决的问题是自定义千位分隔符(法语的不间断空格对我来说没问题)。
XLSX 工作簿允许此类自定义(更新:我的意思是设置每个单元格的格式区域设置),这可以通过 MS Office 和 OpenOffice 实现。我想在代码中做同样的事情。
( Apache POI 3.12)
最佳答案
在货币数字格式的 Offixe OpenXML (*.xlsx
) 中,只能本地化货币符号,但不能本地化小数点分隔符。小数点分隔符来自运行 Excel 的 Windows 系统的 Windows 系统区域设置。千位分隔符也默认为运行 Excel 的 Windows 系统的 Windows 系统区域设置。
在 Excel 中,这看起来像:
如您所见,只能本地化货币符号。
至少可以使用格式字符串设置千位分隔符。所以格式字符串可以是
"#\\###\\##0.00\\[$€-40C];[红色]\\-#\\###\\##0.00\\[$€- 40C]”
。
这是货币数字格式,具有本地化的法国欧元货币符号和空格作为千位分隔符。因为我们伪造了千位分隔符,所以我们必须在格式字符串中提供所需数量的数字。
小数分隔符是默认值,这意味着它来自运行 Excel 的 Windows 系统的 Windows 系统区域设置。因此,格式字符串中的点 .
并不意味着始终使用点作为小数分隔符,而是使用来自运行 Excel 的 Windows 系统的 Windows 系统区域设置的小数分隔符。如果我们使用逗号 ,
作为格式字符串中的千位分隔符,那么这也会使用来自运行 Excel 的 Windows 系统的 Windows 系统区域设置的千位分隔符。然后我们就不需要在格式字符串中给出这么多数字,因为千位分隔符设置将每千位重复一次。所以
“#,##0.00\\[$€-40C];[红色]\\-#,##0.00\\[$€-40C]”
就足够了。
示例:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.streaming.SXSSFSheet;
public class CreateExcelNumberFormat {
public static void main(String[] args) throws Exception {
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
DataFormat dataformat = workbook.createDataFormat();
CellStyle cellStyleCurrency = workbook.createCellStyle();
cellStyleCurrency.setDataFormat(dataformat.getFormat("#\\ ###\\ ##0.00\\ [$€-40C];[RED]\\-#\\ ###\\ ##0.00\\ [$€-40C]"));
Sheet sheet = workbook.createSheet();
Row row = sheet.createRow(1);
Cell cell = row.createCell(0);
cell.setCellValue(123456.78);
cell.setCellStyle(cellStyleCurrency);
((SXSSFSheet)sheet).trackColumnForAutoSizing(0);
sheet.autoSizeColumn(0);
workbook.write(new FileOutputStream("CreateExcelNumberFormat.xlsx"));
workbook.close();
workbook.dispose();
}
}
但这与 Libreoffice OpenDocument 电子表格格式中可用的本地化货币格式不同。这看起来像:
正如您在此处看到的,货币符号和整个格式的语言都可以本地化。
但 Office OpenXML (*.xlsx
) 无法存储本地化的货币数字格式。 OpenDocument Spreadsheet (*.ods
) 是 OpenOffice/Libreoffice 的原生格式,可以保存本地化的货币数字格式,但如果 Excel 打开这样的文件,本地化将会丢失。
OpenOffice/Libreoffice 的“语言”组合框的设置不能存储在 *.xlsx
中,也不能存储在 OpenOffice/Libreoffice 中。在 OpenOffice/Libreoffice 中设置默认值以外的其他内容,将文件另存为 *.xlsx
,关闭 OpenOffice/Libreoffice,在 OpenOffice/Libreoffice 中打开存储的 *.xlsx
文件再次。您将看到“语言”已重置为默认值。
关于java - 如何使用 Apache POI (SXSSF) 设置特定单元格的数据(数字)格式区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46180941/
在流处理方面,Apache Beam和Apache Kafka之间有什么区别? 我也试图掌握技术和程序上的差异。 请通过您的经验报告来帮助我理解。 最佳答案 Beam是一种API,它以一种统一的方式使
有点n00b的问题。 如果我使用 Apache Ignite 进行消息传递和事件处理,是否还需要使用 Kafka? 与 Ignite 相比,Kafka 基本上会给我哪些(如果有的话)额外功能? 提前致
Apache MetaModel 是一个数据访问框架,它为发现、探索和查询不同类型的数据源提供了一个通用接口(interface)。 Apache Drill 是一种无架构的 SQL 查询引擎,它通过
Tomcat是一个广泛使用的java web服务器,而Apache也是一个web服务器,它们在实际项目使用中有什么不同? 经过一些研究,我有了一个简单的想法,比如, Apache Tomcat Ja
既然简单地使用 Apache 就足以运行许多 Web 应用程序,那么人们何时以及为什么除了 Apache 之外还使用 Tomcat? 最佳答案 Apache Tomcat是一个网络服务器和 Java
我在某个 VPS( friend 的带 cPanel 的 apache 服务器)上有一个帐户,我在那里有一个 public_html 目录。我们有大约 5-6 个网站: /home/myusernam
我目前正在尝试将模块加载到 Apache,使用 cmake 构建。该模块称为 mod_mapcache。它已成功构建并正确安装在/usr/lib/apache2/modules directroy 中
我对 url 中的问号有疑问。 例如:我有 url test.com/controller/action/part_1%3Fpart_2 (其中 %3F 是 url 编码的问号),并使用此重写规则:R
在同一台机器上,Apache 在端口 80 上运行,Tomcat 在端口 8080 上运行。 Apache 包括 html;css;js;文件并调用 tomcat 服务。 基本上 exampledom
Apache 1 和 Apache 2 的分支有什么区别? 使用一种或另一种的优点和缺点? 似乎 Apache 2 的缺点之一是使用大量内存,但也许它处理请求的速度更快? 最有趣的是 Apache 作
实际上,我们正在使用 Apache 网络服务器来托管我们的 REST-API。 脚本是用 Lua 编写的,并使用 mod-lua 映射。 例如来自 httpd.conf 的实际片段: [...] Lu
我在 apache 上的 ubuntu 中有一个虚拟主机,这不是我的主要配置,我有另一个网页作为我的主要网页,所以我想使用虚拟主机在同一个 IP 上设置这个。 urologyexpert.mx 是我的
我使用 Apache camel 已经很长时间了,发现它是满足各种系统集成相关业务需求的绝佳解决方案。但是几年前我遇到了 Apache Nifi 解决方案。经过一番谷歌搜索后,我发现虽然 Nifi 可
由于两者都是一次处理事件的流框架,这两种技术/流框架之间的核心架构差异是什么? 此外,在哪些特定用例中,一个比另一个更合适? 最佳答案 正如您所提到的,两者都是实时内存计算的流式平台。但是当您仔细观察
apache 文件(如 httpd.conf 和虚拟主机)中使用的语言名称是什么,例如 # Ensure that Apache listens on port 80 Listen 80 D
作为我学习过程的一部分,我认为如果我扩展更多关于 apache 的知识会很好。我有几个问题,虽然我知道有些内容可能需要相当冗长的解释,但我希望您能提供一个概述,以便我知道去哪里寻找。 (最好引用 mo
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4 个月前关闭。 Improve
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
这个问题在这里已经有了答案: Difference Between Apache Kafka and Camel (Broker vs Integration) (4 个回答) 3年前关闭。 据我所知
我有 2 个使用相同规则的子域,如下所示: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond
我是一名优秀的程序员,十分优秀!