楼主: samt007

Oracle PLSQL读取(解析)Excel文档

[复制链接]
论坛徽章:
9
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12马上有车
日期:2014-04-16 17:19:19慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
21#
发表于 2015-5-14 13:01 | 只看该作者
我有权利的话,必须给你精华

使用道具 举报

回复
论坛徽章:
12
2012新春纪念徽章
日期:2012-01-04 11:49:54秀才
日期:2015-09-11 10:43:06处女座
日期:2015-07-20 16:19:14懒羊羊
日期:2015-03-09 13:14:372015年新春福章
日期:2015-03-06 11:57:31美羊羊
日期:2015-03-04 14:48:58马上有房
日期:2014-07-21 13:13:25凯迪拉克
日期:2013-09-12 15:56:12蜘蛛蛋
日期:2013-06-18 16:09:38咸鸭蛋
日期:2013-03-14 08:29:23
22#
发表于 2015-5-14 13:44 | 只看该作者
samt007 发表于 2015-5-14 11:54
是的。。。。
另外,我猜测他的需求应该是想输出一些特殊格式内容的文档。

是这个意思。
现在用户要求越来越高了,select出一个报表太简陋了,用户一般都要求EXCEL的表格。
当然给出纯数据,再加工也是可以的,但直接生成XLS可以简化一些工作,CSV用EXCEL打开后,再加工还是要花些功夫的。

使用道具 举报

回复
论坛徽章:
12
2012新春纪念徽章
日期:2012-01-04 11:49:54秀才
日期:2015-09-11 10:43:06处女座
日期:2015-07-20 16:19:14懒羊羊
日期:2015-03-09 13:14:372015年新春福章
日期:2015-03-06 11:57:31美羊羊
日期:2015-03-04 14:48:58马上有房
日期:2014-07-21 13:13:25凯迪拉克
日期:2013-09-12 15:56:12蜘蛛蛋
日期:2013-06-18 16:09:38咸鸭蛋
日期:2013-03-14 08:29:23
23#
发表于 2015-5-14 13:46 | 只看该作者
http://www.itpub.net/thread-349479-1-1.html
这个也可以参考一下,算是从另一个角度的解决方法--用excel的vba

使用道具 举报

回复
论坛徽章:
5
慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-04-02 19:59:02懒羊羊
日期:2015-05-17 21:03:29懒羊羊
日期:2015-05-20 20:04:36
24#
发表于 2015-5-14 15:06 | 只看该作者
这种事肯定是excel自己做效率最高,一个20MB的xlsx文件另存为csv也只要几秒钟。
可以在客户端js脚本里用activex技术操作excel对象。

例子:将a.xlsx另存为a.csv
<html>
<body>
<script type="text/javascript">
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelBook = ExcelApp.Workbooks.open("D:\a.xlsx"); ;
var ExcelSheet = ExcelBook.Worksheets(1);
var ss = ExcelBook.SaveAs("D:\a.csv",6);
ExcelApp.DisplayAlerts = false;
ExcelApp.quit();
</script>
</body>
</html>

使用道具 举报

回复
论坛徽章:
5
慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-04-02 19:59:02懒羊羊
日期:2015-05-17 21:03:29懒羊羊
日期:2015-05-20 20:04:36
25#
发表于 2015-5-14 15:08 | 只看该作者
数据库服务器要处理的事情太多了,这种负担就不要加到数据库里面了。
没有安全性要求,不担心数据泄密的简单任务可以放到客户端来做,解析excel文档也属于这类任务。

使用道具 举报

回复
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02秀才
日期:2017-03-20 13:42:20秀才
日期:2017-07-11 13:54:02
26#
 楼主| 发表于 2015-5-14 15:31 | 只看该作者
komicakomica 发表于 2015-5-14 15:08
数据库服务器要处理的事情太多了,这种负担就不要加到数据库里面了。
没有安全性要求,不担心数据泄密的简 ...

不知道你有没有开发过Excel数据上传的程序。
例如,库存量导入,PO行批量导入,采购接收批量导入等等。
这些都是要先将用户整理好的Excel数据,导入到临时表,然后经过数据验证,再塞标准接口表或者API,产生正式的数据。
这个动作是一气呵成的,所以如何解析Excel文档的数据是必须做的一步,而且这个解析的动作对于数据库来说并没有很大的压力(数据量不大的情况下)。

使用道具 举报

回复
论坛徽章:
5
慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47喜羊羊
日期:2015-04-02 19:59:02懒羊羊
日期:2015-05-17 21:03:29懒羊羊
日期:2015-05-20 20:04:36
27#
发表于 2015-5-14 16:10 | 只看该作者
samt007 发表于 2015-5-14 15:31
不知道你有没有开发过Excel数据上传的程序。
例如,库存量导入,PO行批量导入,采购接收批量导入等等。
...

你说“如果用文本来做,先要做一个转换,对于用户来说无疑是多做了一个动作,操作不方便。”
这个操作并不需要用户来做,可以让程序自动完成,也不需要开发额外的程序,调用excel接口就能搞定。
从csv文件向表中导入数据,也有现成的工具。

使用道具 举报

回复
论坛徽章:
25
奥运会纪念徽章:射击
日期:2013-01-28 09:12:182014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11马上有对象
日期:2014-03-20 16:14:11马上加薪
日期:2014-03-20 16:14:11喜羊羊
日期:2015-04-09 18:46:34秀才
日期:2016-03-24 09:20:52
28#
发表于 2015-5-14 16:59 | 只看该作者
支持原创

使用道具 举报

回复
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02秀才
日期:2017-03-20 13:42:20秀才
日期:2017-07-11 13:54:02
29#
 楼主| 发表于 2015-5-14 17:29 | 只看该作者
komicakomica 发表于 2015-5-14 16:10
你说“如果用文本来做,先要做一个转换,对于用户来说无疑是多做了一个动作,操作不方便。”
这个操作并 ...

不瞒你,之前我这边开发导入的程序,就是在Excel文档加入一个宏(用VB代码),让用户点一个转换的按钮,先自动在客户端将Excel转换为Tab制表符的Txt文档,然后再导入并解析Txt文档,实现数据上传。
但是经常发生用户选错文件(应该选txt文档而不是xls文档上传),另外,Excel的宏也经常用不了等的问题。
最惨的是,升级Win7系统之后,还发生了一个灾难性的问题:Excel文档第一转换为txt,上传之后,居然不可以再删掉这个txt文档了!再次转换报错。
所以才想到不如直接解析Excel更加好的也是更加直观的办法!
想不到你还停留在"古代"的时候,呵呵。

另外,兄台你太保守了,其实这段解析Excel的也只是一段PLSQL,效率方面应该还是挺不错的。至于对服务器有多少的影响,这点我有专门咨询过DBA的。
毕竟服务器和系统是为了方便用户,提高用户工作效率而生的,过于考虑别的问题反而得不偿失!
总的来说,对于用户的操作体验来说,这个做法实在是太好了。

使用道具 举报

回复
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02秀才
日期:2017-03-20 13:42:20秀才
日期:2017-07-11 13:54:02
30#
 楼主| 发表于 2015-5-14 17:31 | 只看该作者
komicakomica 发表于 2015-5-14 16:10
你说“如果用文本来做,先要做一个转换,对于用户来说无疑是多做了一个动作,操作不方便。”
这个操作并 ...

可以看看我这个文档:
Oracle EBS公用Excel数据批量上传开发(Web共享版) V1.0
http://wenku.baidu.com/view/4866e3171711cc7931b716da

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表