2011-08-15 41 views
5

将选择查询数据从mysql导出到csv &用excel打开时,前导零不见了。导出为csv/excel包含前导零的方式

虽然列是VARCHAR,当数据被导出,它写得像

4567 instead of 04567,是有办法保持领先的零,而导出为CSV文件?

+0

你如何导出它们? –

+0

我在sql yog中运行select查询后导出,一旦我得到输出,我使用sql yog中的选项导出为.csv。 – Sharpeye500

+0

裸露的前导零可能会导致麻烦。许多系统会将04567视为八进制数字,并将其视为八位数字,给予您2423十进制 –

回答

-3

您需要用双引号包装数字,例如:...,"04567",...,但随后它将被解释为电子表格中的文本,因此除非您首先进行转换(整数不能在Excel中以0开头),否则整数算术将无法工作)。

+0

我运行使用选择查询,我没有手动。 – Sharpeye500

+0

@Sharpeye,这没什么区别......只需在你的varchar列的输出周围包装双引号。 – Paulpro

+1

从table1中选择zip_code; - >我是否在查询中换行?或在Excel中,请。简单一点。谢谢。 – Sharpeye500

1

导出csv时,将数据放在单引号之间。

即04567将为'04567'

+1

从表1中选择CONCAT('\'',zip_code,'\'') – leoh

+0

这也有帮助,谢谢leoh。 – Sharpeye500

+1

现在Excel正在显示这些引号,这是一种不需要的效果。此外,我还需要在处理文件时删除它们以获取数字。 – derloopkat

0

您的CSV文件将具有前导零。只需在文本编辑器中打开它并查看。

问题是Excel和Numbers(对于Mac)将删除前导零,并将字符串与数字转换为数字格式。这是有目的的,因为大量的输入到excel来自各种来源,其中数字通常被视为文本。当你把数字放入excel时,你通常希望用数字(即计算)而不是文本来处理它们。所以他们已经自动处理最常见的用例。

强制excel将数字显示为输入文本而不需要用户执行任何操作的唯一方法是输出一个excel文件并在其中指定一个“自定义数字格式”。我建议为此使用XLS导出库,因为它看起来不如将配置文本行添加到CSV文件中那么简单。

1

如果您使用的是SSRS,则需要在文本框窗格中输入需要前导零的文本框,然后向下滚动以格式化并输入零,以获取数字中的数字。例如,在一个邮政编码中,您可以在格式框中输入00000。我知道这适用于Excel 2013.