【问题标题】:ORACLE APEX - Download to .CSV (null values shown as - are missing) problemORACLE APEX - 下载到 .CSV(空值显示为 - 缺失)问题
【发布时间】:2021-10-19 23:26:29
【问题描述】:

我最近从 APEX 5.0.3 升级到 APEX 20.2,从那以后我在将表格下载为 .CSV 文件时遇到了问题

表格有很多列,每列包含文本、(十进制)数字或空值,在 APEX 中显示为 -(破折号),具有 APEX 功能(属性 => 外观 =>将空值显示为 - )

Col6Col8Col9 显示 -(破折号)

下表只是一个包含 10 列的示例(用 |(竖线)分隔),以供您参考。

示例表:

Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
Max Muster 1500 USD 2.25 - 13.02.2021 - - A
Felix Muster 2300 CHF 3.25 1 26.07.2021 IN CN D
Moritz Max 4500 EUR 4.20 - 16.08.2021 - - C

CSV 输出:

Max,Muster,1500,USD,2.25,,13.02.2021,,,A

Felix,Muster,2300,CHF,3.25,1,26.07.2021,IN,CN,D

Moritz,Max,4500,EUR,4.20,,16.08.2021,,,C

APEX 20.2 中的标准下载丢失了破折号!!我想知道为什么。

我希望 .CSV 文件中出现以下结果:

Max,Muster,1500,USD,2.25,**-**,13.02.2021,**-**,**-**,A

Felix,Muster,2300,CHF,3.25,1,26.07.2021,IN,CN,D

Moritz,Max,4500,EUR,4.20,**-**,16.08.2021,**-**,**-**,C

有没有人可以解决这个问题。我们有许多多达 100 列的报告,我们需要文件中的破折号。我不想在 .CSV 文件中添加破折号,也不想将 - 替换为任何其他(特殊)字符。

最好的问候,

托马斯

【问题讨论】:

  • 您是如何下载到 CSV 的?您是否使用下载到 csv 的交互式网格属性(操作 --> 下载 --> CSV)?或者你使用 PL/SQL 进程来处理它?
  • 嗨罗伯托。我正在使用 Actions --> 下载 --> CSV 和 apex 5.0.3 它工作得很好
  • 嗨 Elch007。那就是问题所在。在 Apex 5 中,它的工作方式实际上有所不同。从 APEX 19 开始,我认为,当您按下载时,斜杠不是列的一部分,因为它是报告本身的属性,当值为空时显示某些内容。在 APEX 中没有简单的解决方案,因为您使用的是报表对象的 AJAX 属性,这很难处理。我更喜欢使用带有函数的标准下载链接,然后您可以在函数内执行所有操作。但在这种情况下,您必须更改所有受影响的页面。
  • 关于 IG 和 IR(交互式网格和交互式报告)的 AJAX 代码有很多变化。实际上,它在成为错误之前是如何工作的,因为您正在下载数据库中不存在的数据。这就是为什么它在最近的版本中得到修复

标签: oracle csv null oracle-apex


【解决方案1】:

在我看来,显示破折号就是:显示破折号。不包含在表中(列值为NULL)。

如果你想导出一个破折号,那么你必须修改报告的查询并直接输入你想要导出的内容(使用 NVL 函数),例如

select empno, 
       ename,
       nvl(to_char(comm), '-') comm   --> this
from emp

然而:请注意 - 正如我的示例所示 - 您可能需要应用另一个函数,例如 TO_CHAR,因为 dash 是 字符串comm列(在 Scott 的示例 EMP 表中)是 NUMBER

我刚刚尝试过,是的 - 它有效(导出破折号)。

此外,注意你所做的事情。如果您将数字与破折号一起导出,您将无法执行任何计算(例如,如果您在 MS Excel 中打开 CSV 文件)。


在你的情况下,它会是

select col1,
       col2, 
       nvl(to_char(col6), '-') col6,   --> NVL + TO_CHAR, as col6 contains numbers 
       nvl(col8, '-') col8             --> just NVL, as col8 contains strings
from your_table

【讨论】:

  • 使用 apex 5.0.3 它工作得很好。我想知道为什么 20.2 版不再是它了。我明白你在说什么,我很欣赏你的解决方案。我至少有 20 张桌子,其中一些有将近 100 列,我必须为此修复所有表格 :-) 好吧,也许没有其他方法可以解决,所以我必须这样做。
  • 正如我在上面所说的,这是该版本中的一个错误。当数据库中的数据不存在时,您无法将某些内容下载到文件中。
猜你喜欢
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2021-06-02
  • 1970-01-01
相关资源
最近更新 更多