Sql 脚本在 Excel 输出文件中显示前导 0

问题描述 投票:0回答:4

我有sql脚本“example.sql”:

SPOOL &1 Select '<.TR>'||'<.TD align="left">'||column_name||'<./TD>'||'<.TR>' from table1; spool off..
将其内容转储到cshell脚本“getdata.csh”,这是我从sql脚本获取数据到csh脚本的方式
sqlplus $ORA_UID/$ORA_PSWD @${SQL}example.sql ${DATA}${ext}
一旦我从中提取数据,我就会创建一个excel 文件由 3 个文件头组合而成。 html
<html>
<.head>
<.title)
Title
<./title>
<./head>
<.body>
<.table >
<.tr>
<.th>Column Name<./th>
<.tr>
ext 文件,其中包含查询结果和预告片.html
<./tr>
<./table>
<./body>
<./html>
,我将此文件另存为 .xls 并通过电子邮件作为附件发送。现在我的问题是 Column_name 的数据以 0 开头,但是当我打开 Excel 时文件前导 0 消失了,但我想保留那个 0.. 那么我可以添加什么来确保电子邮件附加的 excel 文件在另一侧打开时将具有前导 0.. 请提供任何帮助

excel shell sql-scripts
4个回答
0
投票

使用预言机:

假设您的属性称为“数字”

select '0' || to_char(number) as number
from table mytable

0
投票

使用 Excel 对象模型或宏进入 Excel 文件,抓取列并更改格式。

您的情况:

Range("A1").Numberformat = "@"

0
投票

如果您要动态生成 Excel 文件,您可以在这些数字前面加上撇号,即“

这会导致 Excel 将数字视为字符串。唯一的缺点是,如果工作表中有任何使用这些数字的方程,可能会导致一些副作用。


0
投票

我过去处理过这个问题,这个问题严格来说是Excel格式的“功能”。不幸的是,我没有资源来完全测试答案,但您可以尝试以下两件事。

  1. 在 cshell 脚本中添加一个步骤,用 ="" 包围 $1 值,

awk '{$1= "="" $1 """;打印 $0}' inFile > outFile

缺点是您现在告诉 Excel 将这些值视为字符串。如果您对这些值进行任何奇特的计算,您可能会遇到不同的问题。

  1. #2(为什么 SO 格式化总是将编号块重新编号为 1!;-!)。因为这确实是一个 Excel 格式问题,而且在我的记忆中,一旦打开并处理文件,您就无法检索前导零,我似乎记得我有一个预先格式化黑色工作表的技巧,将其另存为模板,然后将文件加载到模板中。我记得这也很棘手,所以不要指望它能起作用。如果上述第 1 条不起作用,您可能需要向 Excel 用户咨询最佳策略。

如果您向他们寻求帮助,您可能还想告诉人们您正在使用的 Excel 版本。

IHTH

© www.soinside.com 2019 - 2024. All rights reserved.