– 销售表(脚本)
create TABLE IT_SALE_TAB(ITS_ID VARchar2(5),ITS_DATE DATE,ITS_TOTAL NUMBER); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’1’,TO_DATE(’2004-01-01’,’YYYY-MM-DD’),250); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’2’,TO_DATE(’2004-02-01’,’YYYY-MM-DD’),150); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’3’,TO_DATE(’2004-03-01’,’YYYY-MM-DD’),80); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’4’,TO_DATE(’2004-04-01’,’YYYY-MM-DD’),96); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’5’,TO_DATE(’2004-05-01’,’YYYY-MM-DD’),300); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’6’,TO_DATE(’2004-06-01’,’YYYY-MM-DD’),210); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’7’,TO_DATE(’2004-07-01’,’YYYY-MM-DD’),320); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’8’,TO_DATE(’2004-08-01’,’YYYY-MM-DD’),280); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’9’,TO_DATE(’2004-09-01’,’YYYY-MM-DD’),276); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’10’,TO_DATE(’2004-10-01’,’YYYY-MM-DD’),368); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’11’,TO_DATE(’2004-11-01’,’YYYY-MM-DD’),163); insert INTO IT_SALE_TAB(ITS_ID,ITS_DATE,ITS_TOTAL) VALUES(’12’,TO_DATE(’2004-12-01’,’YYYY-MM-DD’),305); COMMIT; 操作Excel对象包(Package)。 create OR REPLACE PACKAGE oraExcel IS xlThin BINARY_INTEGER DEFAULT 2; DummyToken BINARY_INTEGER; applicationToken BINARY_INTEGER:=-1; — Excel对象句柄 WorkBooksToken BINARY_INTEGER:=-1; — 工作簿句柄 WorkBookToken BINARY_INTEGER:=-1; WorkSheetToken BINARY_INTEGER:=-1; — 工作表句柄 WorkSheetToken1 BINARY_INTEGER:=-1; RangeToken BINARY_INTEGER:=-1; — Range区句柄 chartObjectToken BINARY_INTEGER:=-1; — 图表对象句柄 chartObject1 BINARY_INTEGER:=-1; chart1Token BINARY_INTEGER:=-1; hLines BINARY_INTEGER:=-1; i BINARY_INTEGER; err_src VARchar2(255); err_desc VARchar2(255); err_hpf VARchar2(255); err_hpID BINARY_INTEGER; — 创建Excel对象 FUNCTION createExcelWorkSheet(servername VARchar2) RETURN BINARY_INTEGER; — 插入数据(字符型) FUNCTION setCellValues(RANGE VARchar2,data VARchar2,TYPE VARchar2) RETURN BINARY_INTEGER; — 插入数据(日期型) FUNCTION setCellValues(RANGE VARchar2,data DATE,TYPE VARchar2) RETURN BINARY_INTEGER; — 插入数据(整型) FUNCTION setCellValues(RANGE VARchar2,data BINARY_INTEGER,TYPE VARchar2) RETURN BINARY_INTEGER; — 插入数据(实型) FUNCTION setCellValuesReal(RANGE VARchar2,data DOUBLE PRECISION,TYPE VARchar2) RETURN BINARY_INTEGER; — 设置列宽 FUNCTION setCellColWidth(RANGE VARchar2,width DOUBLE PRECISION,TYPE VARchar2) RETURN BINARY_INTEGER; — 设置表格 FUNCTION setCellLines(RANGE VARchar2,BordersIndex BINARY_INTEGER,weight BINARY_INTEGER DEFAULT xlThin,TYPE VARchar2) RETURN BINARY_INTEGER; — 合并单元格 FUNCTION setCellMerge(RANGE VARchar2,bValues BOOLEAN,TYPE VARchar2) RETURN BINARY_INTEGER; — 设置字体属性 FUNCTION setCellFont(RANGE VARchar2,Property VARchar2, fontValues BINARY_INTEGER,TYPE VARchar2) RETURN BINARY_INTEGER; — 调用方法 FUNCTION callMethod(RANGE VARchar2,MethodName VARchar2) RETURN BINARY_INTEGER; — 插入图表 FUNCTION insertchart(xpos BINARY_INTEGER,ypos BINARY_INTEGER, width BINARY_INTEGER,height BINARY_INTEGER, RANGE VARchar2,TYPE VARchar2) RETURN BINARY_INTEGER; — 保存文件 FUNCTION SaveToFile(filename VARchar2) RETURN BINARY_INTEGER; — 关闭Excel对象 FUNCTION CloseExcel RETURN BINARY_INTEGER; END oraExcel; 数据包体内容(PACKAGE BODY) create OR REPLACE PACKAGE BODY oraExcel IS FUNCTION createExcelWorkSheet(servername VARchar2) RETURN BINARY_INTEGER IS BEGIN — 创建Excel对象 i:=ordcom.createObject(’Excel.Application’, 0, servername,applicationToken); IF (i!=0) THEN — 创建失败,提示返回的错误信息 ordcom.GetLastError(err_src, err_desc, err_hpf, err_hpID); raise_application_error(-20000,err_src || err_desc || err_hpf || err_hpID); END IF; — 通过程序对象句柄获取工作簿句柄 i:=ordcom.GetProperty(applicationToken, ’WorkBooks’, 0, WorkBooksToken); ordcom.InitArg(); ordcom.SetArg(-4167,’I4’); i:=ordcom.Invoke(WorkBooksToken, ’Add’, 1, WorkBookToken); ordcom.InitArg(); ordcom.SetArg(’Sheet 1’,’BSTR’); — 获取工作表句柄 i:=ordcom.GetProperty(applicationToken, ’WorkSheets’, 0, WorkSheetToken1); i:=ordcom.Invoke(WorkSheetToken1, ’Add’, 0, WorkSheetToken); RETURN i; END createExcelWorkSheet; FUNCTION setCellValues(RANGE VARchar2,data VARchar2, TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); — 获取Range区句柄,之后将数据写入到指定的单元格 i:=ordcom.GetProperty(WorkSheetToken, ’Range’, 1, RangeToken); i:=ordcom.SetProperty(RangeToken, ’Value’, data, TYPE); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellValues; FUNCTION setCellValues(RANGE VARchar2,data BINARY_INTEGER,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE, ’BSTR’); i:=ordcom.GetProperty(WorkSheetToken, ’Range’, 1, RangeToken); i:=ordcom.SetProperty(RangeToken, ’Value’, data, type); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellValues; FUNCTION setCellValuesReal(RANGE VARchar2,data DOUBLE PRECISION,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE, ’BSTR’); i:=ordcom.GetProperty(WorkSheetToken, ’Range’, 1, RangeToken); i:=ordcom.SetProperty(RangeToken, ’Value’, data, type); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellValuesReal; FUNCTION setCellValues(RANGE VARchar2,data DATE,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE, ’BSTR’); i:=ordcom.GetProperty(WorkSheetToken, ’Range’, 1, RangeToken); i:=ordcom.SetProperty(RangeToken, ’Value’, data, TYPE); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellColWidth; FUNCTION setCellMerge(RANGE VARchar2,bValues BOOLEAN,TYPE VARchar2) RETURN i; END setCellValues; FUNCTION setCellColWidth(RANGE VARchar2,width DOUBLE PRECISION,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’,1,RangeToken); i:=ordcom.SetProperty(RangeToken,’ColumnWidth’,width,TYPE); i:=ordcom.DestroyObject(RangeToken); RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’,1,RangeToken); i:=ordcom.SetProperty(RangeToken,’MergeCells’,bValues,’BOOLEAN’); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellMerge; FUNCTION setCellLines(RANGE VARchar2,BordersIndex BINARY_INTEGER, weight BINARY_INTEGER DEFAULT xlThin,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’,1,RangeToken); ordcom.InitArg(); ordcom.SetArg(BordersIndex,TYPE); — 画表格的具体载入参数 i:=ordcom.GetProperty(RangeToken,’Borders’,1,hLines); i:=ordcom.SetProperty(hLines,’weight’,weight,TYPE); i:=ordcom.DestroyObject(hLines); i:=ordcom.DestroyObject(RangeToken); RETURN i; END setCellLines; FUNCTION setCellFont(RANGE VARchar2,Property VARchar2,fontValues BINARY_INTEGER,TYPE VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’,1,RangeToken); ordcom.InitArg(); ordcom.SetArg(Property,TYPE); ordcom.InitArg(); i:=ordcom.GetProperty(WorkSheetToken, ’chartObjects’, 0, chartObjectToken); ordcom.InitArg(); ordcom.SetArg(xpos,’I2’); — 载入图表对象位置参数 ordcom.SetArg(ypos,’I2’); ordcom.SetArg(width,’I2’); ordcom.SetArg(height,’I2’); i:=ordcom.Invoke(chartObjectToken, ’Add’, 4, chartObject1); — 添加图表 i:=ordcom.GetProperty(chartObject1, ’chart’, 0,chart1Token); ordcom.InitArg(); ordcom.SetArg(RANGE, ’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’, 1, RangeToken); — 选取区域 ordcom.InitArg(); ordcom.SetArg(RangeToken, ’DISPATCH’); IF TYPE=’xlPie’ THEN charttype := -4102; ELSIF TYPE=’xl3DBar’ THEN charttype := -4099; ELSIF TYPE=’xlBar’ THEN charttype := 2; ELSIF TYPE=’xl3dLine’ THEN i:=ordcom.GetProperty(RangeToken,’Font’,0,hLines); — 获取字体对象 i:=ordcom.SetProperty(hLines,Property,fontValues,TYPE); i:=ordcom.DestroyObject(hLines); i:=ordcom.DestroyObject(RangeToken); RETURN i; END; FUNCTION callMethod(RANGE VARchar2,MethodName VARchar2) RETURN BINARY_INTEGER IS reti BINARY_INTEGER := -1; BEGIN ordcom.InitArg(); ordcom.SetArg(RANGE,’BSTR’); i:=ordcom.GetProperty(WorkSheetToken,’Range’,1,RangeToken); ordcom.InitArg(); i:=ordcom.Invoke(RangeToken,MethodName,0,reti); — 调用对象的方法 i:=ordcom.DestroyObject(RangeToken); RETURN reti; END; FUNCTION insertchart(xpos BINARY_INTEGER, ypos BINARY_INTEGER, width BINARY_INTEGER, height BINARY_INTEGER, RANGE VARchar2, TYPE VARchar2) RETURN BINARY_INTEGER IS charttype BINARY_INTEGER:= -4099; BEGIN charttype:= -4101; END IF; ordcom.SetArg(charttype,’I4’); i:=ordcom.Invoke(chart1Token,’chartWizard’, 2, DummyToken); i:=ordcom.DestroyObject(RangeToken); i:=ordcom.DestroyObject(chartObjectToken); i:=ordcom.DestroyObject(chartObject1); i:=ordcom.DestroyObject(chart1Token); RETURN i; END insertchart; FUNCTION SaveToFile(filename VARchar2) RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.SetArg(filename,’BSTR’); i:=ordcom.Invoke(WorkBookToken, ’SaveAs’, 1, DummyToken); — 保存文件 IF (i!=0) THEN ordcom.GetLastError(err_src, err_desc, err_hpf, err_hpID); raise_application_error(-20000,err_src || err_desc || err_hpf || err_hpID); END IF; RETURN i; END SaveToFile; FUNCTION CloseExcel RETURN BINARY_INTEGER IS BEGIN ordcom.InitArg(); ordcom.InitArg(); ordcom.SetArg(FALSE,’BOOL’); i:=ordcom.Invoke(WorkBookToken, ’Close’, 0, DummyToken); i:=ordcom.DestroyObject(WorkBookToken); ordcom.InitArg(); i:=ordcom.Invoke(WorkBooksToken, ’Close’, 0, DummyToken); i:=ordcom.DestroyObject(WorkBooksToken); i:=ordcom.Invoke(applicationToken, ’Quit’, 0, DummyToken); — 关闭所有句柄 i:=ordcom.DestroyObject(WorkSheetToken); i:=ordcom.DestroyObject(WorkSheetToken1); i:=ordcom.DestroyObject(applicationToken); i:=ordcom.DestroyObject(chartObjectToken); i:=ordcom.DestroyObject(chart1Token); i:=ordcom.DestroyObject(hLines); i:=ordcom.DestroyObject(chartObject1); i:=ordcom.DestroyObject(dummyToken); RETURN i; END CloseExcel; END oraExcel; |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。