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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

oracle to excel


5 رد (ردود) على هذا الموضوع

#1 qnoc_raed

qnoc_raed

    عضو

  • الأعضــاء
  • 14 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 December 2005 - 09:24 AM

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

====================================================
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, 29 December 2005 - 09:28 AM.


#2 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 December 2005 - 10:53 AM

الاخ الكريم
اليك هذا المثال لعملية الحساب في ملف 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;

۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#3 qnoc_raed

qnoc_raed

    عضو

  • الأعضــاء
  • 14 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 December 2005 - 11:07 AM

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

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

TRIGGER RAISED UNHANDELED EXCEPTION ORA-106556

#4 luay hudieb

luay hudieb

    عضو

  • الأعضــاء
  • 8 مشاركة
  • الاسم الأول:luay
  • اسم العائلة:hudieb
  • البـلـد: Country Flag

تاريخ المشاركة 04 January 2006 - 10:52 AM

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

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

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

#5 qnoc_raed

qnoc_raed

    عضو

  • الأعضــاء
  • 14 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 04 January 2006 - 11:06 AM

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

#6 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 04 January 2006 - 11:19 AM

السلام عليكم ورحمة الله وبركاته
الاخ الكريم هو فعلا يوجد مشكلة في التحويل وخصوصا العربي
ولكن تبين لي بعد البحث ان المشكلة في 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;

۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com