oracle直接生成xlsx,【玩转Excel】Oracle PLSQL处理生成XLSX文件

本文探讨了如何在Oracle数据库端直接生成Excel(XLSX)文件,而非仅限于CSV或TXT格式。作者指出,虽然文本文件开发简单,但存在数据解析错误和类型转换问题,且文件较大。相比之下,二进制的XLSX文件更小,用户体验更好,尤其适合手机查看。文章介绍了PL/SQL生成XLSX文件的优缺点,包括内存消耗问题,并分享了一个经过优化的PL/SQL脚本,显著提高了生成速度。
摘要由CSDN通过智能技术生成

INTRODUCTION介绍

之前发表了一个研究心得(当然是站在别人的肩膀上的),在Oracle中直接用PL/SQL解析并读取Excel的内容。很多人都感兴趣,按照我的写法也可以成功实现了。

不过,有很多朋友提出了另外一个要求:读取Excel是可以了,那是否可以在Oracle数据库端直接生成Excel文件?二进制的文件。

开始我对这个问题是不怎么在意的。因为,在Oracle数据库中完全可以直接生成逗号或者Tab制表符的分隔符的文本(例如csv),然后用Excel打开,那是可以完全达到目的(之前我一直就是这样子做,特别是导数据给User的时候)。----

后来,由于这边老总要接收Excel数据的邮件,然后又必须要求用手机也可以正常查看数据,所以也只好研究这个产生Excel二进制文件的功能了。

实际上,这个办法也挺好,开发也简单。只不过,文本的文件相对于二进制的文件,有其优点,也有其缺点。请容我按照我的理解慢慢分析。

2.1        文本文件的优点

主要的优点,当然是开发简单,只需要将SQL的数据用游标获取,然后用逗号或者tab符号作为列分隔符,再用UTL_FILE将输出结果到服务器,产生文本文件即可。

怎么开发的我就不多说了,随便百度一下,资料都一大堆。

2.2        文本文件的缺点

文件文件的缺点,对应的就是Excel二进制文件的优点。

1)文本文件用Excel打开带来的问题

虽然它开发简单,但是由于数据是用逗号分隔符或者Tab制表符作为栏位的列分隔原则,导致了其数据解析的时候,非常容易出错!假设数据里面本来就有Tab符号,那么如果用Excel打开的时候,数据都乱了(因为多了一列)。如果是产生Excel文件,就肯定不会有这个额外的问题!

由于文本自动转换到Excel的特性导致,某些栏位,Excel会自作聪明地进行类型的转换!不信,你将4-1作为一个文本内容,然后用Excel打开看看?肯定自动变为日期类型2015/4/1了。

2)产生的文件容量的问题

通过测试得知,当输出的内容越多,用文本存储所占的容量就越大。而用Excel输出的文件就越小(相对于文本来说)。这说明,二进制的文件,应该是对数据有一些压缩的算法,所以其处理起来更加有效率。(附上实际的测试:162605行数据,文本:98MB,Excel:32.38MB)。

3)用户的操作体验

更加方便用户操作。如果是产生一个excel文件,当用户打开文件的时候,不会有那个烦人的自动转换内容的提示;另外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值