الانتقال إلى المحتوى

oracle to excel


qnoc_raed

Recommended Posts

السلام عليكم
هذا السكريبت لانشاء ملف اكسل من قاعدة بيانات اوراكل
لدي مشكلة في اللغة العربية بحيث انه يتم تحويل الاسماء او الكلمات العربية الى الى لغة غير مفهومة
الرجاء منكم المساعدة في ذلك
وشكرا

====================================================
DECLARE



ENO NUMBER(30);
NAMEA varchar2(80);
CURSOR c_cur IS
SELECT EMPNO,ENAME FROM EMP ;
MyApplication OLE2.OBJ_TYPE;
args OLE2.LIST_TYPE;
wb OLE2.OBJ_TYPE;
wss OLE2.OBJ_TYPE;
wbs OLE2.OBJ_TYPE;
cell OLE2.OBJ_TYPE;
went ole2.obj_type;
font ole2.obj_type;
c1 number(4);
c2 number(4);
args1 OLE2.LIST_TYPE;
begin


--INITIAL CODE ESTABLISHING THE Excel Object and Workbook/Worksheet
MyApplication := OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(MyApplication , 'Visible',1);
wbs := OLE2.GET_OBJ_PROPERTY(MyApplication ,'Workbooks');
wb := OLE2.INVOKE_OBJ(wbs,'Add');
wss := OLE2.GET_OBJ_PROPERTY(MyApplication ,'ActiveSheet');
OLE2.SET_PROPERTY(wss , 'Value','Sheet1');

OPEN c_cur;
c1:=1;
LOOP


c2:=1;


fetch c_cur into ENO,nameA;
exit when c_cur%NOTFOUND;

loop
if c2=2 then exit;
end if;
args := OLE2.CREATE_ARGLIST;

OLE2.ADD_ARG(args, c1);
OLE2.ADD_ARG(args, c2);
cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args);
OLE2.SET_PROPERTY(cell, 'Value', ENO);
ole2.set_property (cell, 'ColumnWidth', '40');
font := ole2.GET_OBJ_PROPERTY (cell, 'Font');
ole2.set_property (font, 'Size', '16');
ole2.set_property (font, 'Bold', True);
OLE2.DESTROY_ARGLIST(args);
ole2.release_obj(cell);

c2:=c2+1;
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, c1);
OLE2.ADD_ARG(args, c2);
cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args);
OLE2.SET_PROPERTY(cell, 'Value', NAMEA);
ole2.set_property (cell, 'ColumnWidth', '40');
ole2.set_property (cell, 'FontStyle', 'ANDALUS');
font := ole2.GET_OBJ_PROPERTY (cell, 'Font');

ole2.set_property (font, 'Size', '28');
ole2.set_property (font, 'Bold', True);

OLE2.DESTROY_ARGLIST(args);
ole2.release_obj(cell);

END LOOP;
c1:=c1+1;



END LOOP;

CLOSE c_cur;
OLE2.DESTROY_ARGLIST(args);


args1 := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args1, 'C:\EXAMPLE.xls');
OLE2.INVOKE(wb, 'SaveAs', args1);
OLE2.DESTROY_ARGLIST(args1);
OLE2.INVOKE(wb,'CLOSE');
ole2.invoke(MYApplication,'Quit');

ole2.release_obj(wb);
ole2.release_obj(wbs);
ole2.release_obj(wss);
ole2.release_obj(wss);
ole2.release_obj(wb);

OLE2.RELEASE_OBJ(MyApplication);


END;

تم تعديل بواسطة qnoc_raed
رابط هذا التعليق
شارك

الاخ الكريم
اليك هذا المثال لعملية الحساب في ملف execl من خلال pl/sql

DECLARE
ConvID	PLS_INTEGER;
BEGIN
 /* Open a DDE conversation with MS Excel on 
    topic abc.xls */
 ConvID := DDE.INITIATE('EXCEL', 'abc.xls');
 /* Recalculate the Excel spreadsheet */
 DDE.EXECUTE(ConvID, '[calculate.now()]', 1000);
END;

رابط هذا التعليق
شارك

الاخ ADMIN05
ما اريده هو تعديل على الكود الذي ارسلته ليظهر الاسماء العربية بخط عربي
لو جربت هذا الكود الذ ارسلته انا لفتح لك برنامج الاكسل ونقل البيامات مباشرة من الاوراكل الى الاكسل

الكود الذي ارسالته انت لم استطع تشغيله يعطيني هذا الخطا

TRIGGER RAISED UNHANDELED EXCEPTION ORA-106556

رابط هذا التعليق
شارك

ما بعرف اذا فهمتك مزبوط ولا لأ بس اذا كانت مشكلة اللغة العربية على مستوى DB فاحيانا تكون في ال NLS_LANG التي تستخدمها واحيانا تكون بسبب خصائص الويندوز نفسه.
على العموم تأكد من خصائص الويندوز اولا من خلال ال regional options في controll panel واعتقد بالتحديد general حيث يجب ان تكون اللغة المختارة هي اللغة العربية (setting for current user).....

ارجو الافادة....

صديقكم الجديد لؤي

رابط هذا التعليق
شارك

شكرا لمرورك الاخ لؤي
لكن اللغة في الويندوز صحيحة وهي العربية
وانا استخدم
maerican
في ال
NLS_LNAG
وما عندي فيها اي مشكلة بالنسبة للغة العربية في التطبيقات الاخرى
ارجو منك تجرب الكود وتشوف النتائج وتخبرني اذا سمحت

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته
الاخ الكريم هو فعلا يوجد مشكلة في التحويل وخصوصا العربي
ولكن تبين لي بعد البحث ان المشكلة في office نفسها فنسخة office2003 or officeXp يوجد فيها مشاكل هذه احدى احتمال سبب حدوث المشكلة الاحتمال الاخر هو عدم في المتغير text_io على كل حال وجدت هذا الكود على office2000 وهو يعمل بشكل صحيح جربه وخبرنا بالنتائج
واسف على التأخير
طبعا يجب ان تكون الاوفيس 2000 عندك مفتوحة واظن ان الكود يعمل على اوفيس 2003 و xp بس لازم الاكسل يكون مفتوح والصفحة فاضية

PROCEDURE to_excel IS
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheets ole2.obj_type;
worksheet ole2.obj_type;
cell ole2.obj_type;
args ole2.list_type;

cursor Vcursor .....etc.

BEGIN
application := ole2.create_obj('Excel.Application');
ole2.set_property(application, 'Visible', 'False');
workbooks := ole2.get_obj_property(application, 'Workbooks');
workbook := ole2.get_obj_property(workbooks, 'Add');
worksheets := ole2.get_obj_property(workbook, 'Worksheets');
worksheet := ole2.get_obj_property(worksheets, 'Add');

row := 1;
col := 1;

for i in Vcursor -- Open Cursor, that returns "value" value
loop
args := ole2.create_arglist;

ole2.add_arg(args, row);
ole2.add_arg(args, col);

cell := ole2.get_obj_property(worksheet, 'Cells', args);

ole2.destroy_arglist(args);

ole2.set_property(cell, 'Value', i.value);

row := row+1;
col := col+1;
end loop; -- Close cursor

args := ole2.create_arglist;
ole2.add_arg(args, 'c:tmpEXAMPLE.XLS');
ole2.invoke(workbook, 'SaveAs', args);
ole2.destroy_arglist(args);
ole2.invoke(application, 'Quit');
ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);
END; 

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية