Posts

Showing posts with the label OpenOffice

Axapta : Open OpenOffice document and Save as

COM OpenOffice; COM oDeskTop; COM oDocument; COMVariant arg; COMVariant byte; Array Arr = new Array(Types::Class); Array oArr = new Array(Types::Class); str url,outFile; COM FileProperties; ; OpenOffice = new Com("com.sun.star.ServiceManager"); oDeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // ############################################################# // เปิดไฟล์ arg = comVariant::createFromArray(Arr); url = "file://Axaptaserver/AxaptaSP4/Excel/Losses.xls"; oDocument = oDeskTop.LoadComponentFromURL(url, "_blank", 0, arg); // ############################################################# // ############################################################# // Save as เป็นอีกไฟล์ FileProperties = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); FileProperties.Name('Overwrite'); FileProperties.Value(true); oArr.value(1,FileProp...

OpenOffice : Double line style

Image
วิธีขีดเส้นใน OpenOffice ให้มี 2 เส้น ทำได้ดังนี้ 1.ใช้เครื่องมือลากเส้น (Line ใน Drawing toolbar) ขีดไว้ แล้วคลิกขวาที่ เส้น เลือก Line... 2.คลิกที่ tab Shadow แล้วติ๊กที่ Use shadow 3.เลือกตำแหน่ง ,ระยะห่างระหว่างเส้นและสีของเส้นที่ 2

OpenOffice : Rows to repeat at top

Image
เวลาจะพิมพ์โดยให้มีแถวใดขึ้นอยู่บนหัวกระดาษทุกหน้า ใน Excel จะเข้าไปที่ 1.File > Page Setup... 2.แล้วก็คลิก tab Sheet 3.ในกลุ่มของ Print titles เลือก Rows to repeat at top ดังรูป ใน OpenOffice เข้าไปที่ 1.Format > Print Ranges > Edit... 2.แล้วก็เลือกตรง Rows to repeat

OpenOffice : Concatenate cells with newline

อยากรวม 2 Cell เข้าด้วยกัน โดยให้มีการขึ้นบรรทัดใหม่ด้วย เช่น A1 = Name B1 = Email แล้วต้องการให้ C1 = Name ขึ้นบรรทัดใหม่ แล้วก็ Email แบบนี้ Name Email ปกติเวลาจะขึ้นบรรทัดใหม่ใน Cell เดิม ก็จะใช้วิธีกด Ctrl + Enter แต่ถ้าจะใช้ Formula ก็ตามนี้ครับ =CONCATENATE(A1,CHAR(13),CHAR(10),B1)

Axapta : Sending data to OpenOffice Calc by X++ using COM

การส่งข้อมูลจาก Axapta ไปให้ OpenOffice อีกวิธีก็คือ ใช้ API ที่ OpenOffice เตรียมไว้ให้ บวกกับคุณสมบัติด้าน COM ของ Axapta ลักษณะโดยทั่วไปของโปรแกรมประเภท Spread Sheet ก็คือ - 1 Document มีได้หลาย Sheets - 1 Sheet มีได้หลาย Ranges หลาย Cells - 1 Ranges สามารถประกอบได้จาก หลาย Cells - 1 Cell ใส่ข้อมูลได้ 1 ชุด ตาม คู่มือของ OpenOffice ก็นำมาเขียนโดยใช้ X++ ได้ดังนี้ static void ooTest(Args _args) { COM OpenOffice; COM oDeskTop; COM oDocument; COM oSheets; COM oSheet; COM oRange; COM BorderStruct; COMVariant arg; COMVariant byte; Array arr = new Array(Types::String); str url; int i; ; OpenOffice = new Com("com.sun.star.ServiceManager"); oDeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // create and initialize a COMVariant object arg = COMVariant::createFromArray(arr); //Create new document oDocument = oDeskTop.LoadComponentFromURL("private:factory/scalc", "_b...

Axapta : Sending data to OpenOffice Calc by X++ using OOCALCVB.dll

Image
วิธีการนี้ต้องใช้ตัวช่วยคือ OOCALCVB.dll 1.Download DLL OOCALCVB.dll ไปไว้ในเครื่อง ปกติก็คือที่ C:\Windows\System32\ 2.ใน Axapta เลือกเมนู Tools > Development tools > Wizards > COM Class Wrapper Wizard 3.คลิก Next แล้วก็ Brows หาไฟล์ในข้อ 1 แล้วก็คลิก Next 4.ป้อน oo ตรงช่อง Element Mask เพื่อเอาไว้สังเกต Classes ที่จะได้ แล้วคลิก Next จะได้รายการของ Class ที่เกิดจาก OOCALCVB.dll 5.คลิก Next แล้วรอจนเสร็จ ก็คลิก Finish 6.เปิดดู AOT จะเห็นว่ามี Class ใหม่เกิดขึ้นมาดังรูป ต่อไปก็ลองเขียน X++ ติดต่อดู ดังตัวอย่าง ooCalc ooCalc; #ooCOMDEF ; ooCalc = new ooCalc(); ooCalc.Workbooks().OpenFile("\\\\Axaptaserver\\AxaptaSP4\\Excel\\Losses.xls",false,"",false); ooCalc.ActiveWorkbook().ActiveSheet().Cells().Item("A1").Value(66); // ooCalc.ActiveWorkbook().ActiveSheet().Cells().Item("A1").SetString(strfmt("Losses of %1 from %2 to %3",fromDate,toDate)); //SetString อันนี้ใช้ไม่ได้ ooCalc.Act...