แลกเปลี่ยนข้อมูลกับ เอ็มเอส เอ็กเซลวี เดลฟีด้วยความช่วยเหลือ โอเล่.
สวัสดีเพื่อนร่วมงานที่รัก!
ไม่ช้าก็เร็วเราทุกคนต้องเผชิญกับภารกิจในการแลกเปลี่ยนข้อมูลกับแอปพลิเคชันแพ็คเกจ เอ็มเอส ออฟฟิศ- หนึ่งในนั้นก็คือ เอ็มเอส เอ็กเซล- และโดยเฉพาะเกี่ยวกับการโต้ตอบกับผลิตภัณฑ์นี้ เอ็มเอส ออฟฟิศจะมีการหารือในบทความนี้
วิธีหนึ่งในการโต้ตอบ เดลฟีค เอ็มเอส เอ็กเซล- คือการเชื่อมต่อให้เป็น โอเล่วัตถุ.
ดังนั้น.
ก่อนอื่นเลยในการทำงานด้วย เอ็มเอส เอ็กเซลและ โอเล่เพิ่มในส่วน การใช้งานโมดูล ComObjและ ActiveX.
และสิ่งแรกที่เราต้องตรวจสอบคือมีการติดตั้งหรือไม่ เอ็มเอส เอ็กเซลบนคอมพิวเตอร์ของผู้ใช้โดยหลักการแล้ว
เมื่อต้องการทำเช่นนี้ เราจะใช้ฟังก์ชัน CLSIDFromProgIDซึ่งดูในรีจิสทรี ซีแอลเอสไอดีสำหรับการถ่ายทอด ProgID:
ความช่วยเหลือจาก MSDN: วิธีการ CLSIDFromProgID
พารามิเตอร์:
pszProgID: เสาStr— สตริงที่มีชื่อของวัตถุ
คลิด: ทีซีแอลเอสดี- ตัวชี้ไปยังโครงสร้าง TGUIDซึ่งวัตถุที่พบถูกถ่ายโอนไปยัง
ผลตอบแทน:
HRESULT— ผลลัพธ์ ซึ่งสามารถรับค่าต่อไปนี้:
ซ_โอเค- พบวัตถุ;
CO_E_CLASSSTRING— ลงทะเบียนแล้ว ซีแอลเอสไอดีสำหรับ ProgIDไม่ถูกต้อง;
REGDB_E_WRITEREGDB- เขียนผิด ซีแอลเอสไอดีไปที่ทะเบียน
จากผลลัพธ์ที่เราต้องการ ซ_โอเค.
มาเขียนฟังก์ชันเพื่อพิจารณาว่ามีอยู่หรือไม่ เอ็กเซลจากผู้ใช้:
ฟังก์ชัน IsXlsInstall: บูลีน; var CLSID: TCLSID; เริ่มต้นผลลัพธ์:= (CLSIDFromProgID("Excel.Application", CLSID) = S_OK); จบ;
ถ้า เอ็กเซลติดตั้งแล้วมาเชื่อมต่อได้เลย คุณสามารถทำได้สองวิธี: GetActiveOleObject— รับลิงก์ไปยังอินสแตนซ์ที่ทำงานอยู่แล้ว เอ็กเซลหรือ CreateOleObject— สร้างตัวอย่างใหม่ เอ็กเซล.
หากเรามีงานรับข้อมูลจากการทำงาน เอ็กเซลจากนั้นเราควรใช้เฉพาะตัวเลือกแรก ในกรณีอื่นๆ ที่เราพยายามเชื่อมต่อ และหากไม่ได้ผล เราก็สร้างมันขึ้นมา
มาเขียน 2 ฟังก์ชั่นเพื่อเชื่อมต่อกัน XlsConnectและเปิดตัวอันใหม่ XlsStart:
มาเพิ่มตัวแปรกัน FXlsAppมีประเภท ตัวแปรซึ่งจะมีการอ้างอิงถึงวัตถุ เอ็กเซล.
FXlsApp ส่วนตัว: ตัวแปร; *** ฟังก์ชั่น XlsConnect: บูลีน; เริ่มต้นผลลัพธ์:= เท็จ;
ลอง FXlsApp:= GetActiveOleObject("Excel.Application"); เอ็มเอส เอ็กเซลผลลัพธ์:= จริง;
ยกเว้นจุดสิ้นสุด; จบ; ขั้นตอน XlsStart; เริ่ม FXlsApp:= CreateOleObject("Excel.Application"); จบ; ตอนนี้คุณสามารถเพิ่มปุ่มได้ เมื่อคลิกแล้วเราจะเชื่อมต่อกันโดยใช้ฟังก์ชันเขียน:
ขั้นตอน btnConnectClick(ผู้ส่ง: TObject); เริ่มต้นถ้าไม่ใช่ IsXlsInstall ให้เพิ่ม Exception.Create("ไม่พบแอปพลิเคชัน MS Excel บน เอ็กเซลเริ่มใน พื้นหลัง- เส้น FXlsApp.Visible:= จริง;สร้างหน้าต่างพื้นหลัง เอ็กเซลมองเห็นได้.
หน้าต่าง เอ็กเซลมันเริ่มว่างเปล่าและจำเป็นต้องเพิ่มเข้าไป สมุดงาน- ทำได้โดยใช้วิธีการ WorkBooks.Addซึ่งเพิ่ม หนังสือเล่มใหม่หรือเปิดไฟล์ที่บันทึกไว้ก่อนหน้านี้หากคุณระบุเส้นทางไปยังไฟล์
มาเพิ่มขั้นตอนที่จะทำสิ่งนี้:
ขั้นตอน XWorkbookAdd(const FilePath: string = ""); เริ่ม FXlsApp.WorkBooks.Add (FilePath); จบ;
เพิ่มหนังสือแล้ว ตอนนี้เรามาลองเขียนอะไรบางอย่างในนั้นกันดีกว่า
FXlsApp.Cells := "ทดสอบสตริง";
ที่ไหน แถวคือดัชนีแถว และ พ.อ— ดัชนีคอลัมน์ที่ขึ้นต้นด้วยหนึ่ง
FXlsApp.Range["A1"] := "เซลล์ A1";
ที่ไหน พิสัยเป็นอาร์เรย์ของเซลล์ และ A1- คุ้นเคย เอ็กเซลพิกัดของเซลล์
สามารถระบุช่วงเป็นพิกัดได้ ตัวอย่างเช่น รหัส
FXlsApp.Range["A3:A10"] := 5;
จะเติมเซลล์ทั้งหมดด้วยหมายเลข 5 A3โดย A10และรหัส
FXlsApp.Range["A3:A10"].Interior.Color:= clMoneyGreen;
จะเน้นช่วงเดียวกันเป็นสีเขียวอ่อน
ใน ด้านหลังคือการรับข้อมูลจาก เอ็กเซล, ใช้งานได้เหมือนกัน เส้น
ShowMessage(FXlsApp.เซลล์);
จะแสดงข้อความพร้อมเนื้อหาของเซลล์ที่มีพิกัด: Row=5, Column=1
หลังจากที่เราได้ดำเนินการกิจวัตรที่จำเป็นแล้วด้วย เอ็กเซลเราสามารถบันทึกหนังสือผลลัพธ์ลงในไฟล์ด้วยคำสั่งต่อไปนี้:
FXlsApp.ActiveWorkbook.SaveAs("C:\Test.xlsx");
ที่ไหน สมุดงานที่ใช้งานอยู่- หนังสือเล่มปัจจุบัน
และปิดแอปพลิเคชัน เอ็กเซลสั่งการ:
FXlsApp.ออก;
คุณเข้าใจตัวเลือกการควบคุมเหล่านี้ได้อย่างไร เอ็กเซลจาก เดลฟีไม่จำกัด และมีวิธีหนึ่งที่ค่อนข้างง่ายในการหาวิธีดำเนินการที่จำเป็นด้วย เอ็กเซลจาก เดลฟี.
มันชื่อมาโคร
ลองจินตนาการว่าเราต้องรวมหลายเซลล์ให้เป็นเซลล์เดียวและเราไม่รู้ว่าต้องทำอย่างไร แต่เราต้องการที่จะค้นหา โดยทำตามขั้นตอนต่อไปนี้:
1. เปิดตัว เอ็กเซลและสร้างหนังสือเปล่าขึ้นมา
2. เรียกใช้คำสั่ง "บันทึกมาโคร" ตามค่าเริ่มต้น ชื่อของมาโครจะเป็น "Macro1" (ใน รุ่นที่แตกต่างกัน เอ็กเซล คำสั่งนี้อยู่ในรายการเมนูต่างๆ)
3. เลือกช่วงของเซลล์ที่ต้องการแล้วคลิกปุ่ม "ผสานและวางตรงกลาง"
4. หยุดบันทึกมาโคร
5. เรียกรายการมาโครและเลือกมาโครที่คุณบันทึกไว้ที่นั่น
6. คลิกปุ่ม "เปลี่ยน"
ตัวแก้ไขเริ่มต้นขึ้น ไมโครซอฟต์ วิชวลเบสิกสำหรับการสมัครโดยเราจะเห็นรหัสของการดำเนินการ:
Sub Macro1() " " Macro1 Macro " พร้อมการเลือก .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False สิ้นสุดด้วยการเลือก .ผสานส่วนท้าย
มาดูสิ่งที่เขาเขียนถึงเราให้ละเอียดยิ่งขึ้นที่นี่:
ด้วยการคัดสรร— สำหรับช่วงของเซลล์ที่เลือก ให้ตั้งค่าคุณสมบัติ:
การจัดตำแหน่งตามแนวนอน = xlCenter — การวางแนวแนวนอน= อยู่ตรงกลาง
การจัดตำแหน่งแนวตั้ง = xlBottom— การวางแนวตั้ง — ตามขอบด้านล่าง
WrapText = เท็จ— การตัดข้อความด้วยคำถูกปิดใช้งาน
การวางแนว = 0— การวางแนว 0 องศา
AddIndent = เท็จ- การใช้งาน เยื้องอัตโนมัติเปิด/ปิด
ระดับการเยื้อง = 0— เยื้องระดับ 0
ShrinkToFit = เท็จ— บีบอัดข้อความเพื่อให้พอดีกับคอลัมน์เปิด/ปิด
ReadingOrder = xlContext— ลำดับการอ่านตามบริบท
ผสานเซลล์ = เท็จ— เปิด/ปิดเซลล์ที่ผสาน
จบด้วย— สิ้นสุดส่วนของงานด้วยช่วงที่เลือก
การเลือกผสาน— รวมช่วงที่เลือก
ตอนนี้เรามาลองรวมเซลล์จาก Delphi:
เราเลือกช่วงที่เราต้องการ
FXlsApp.Selection.MergeCells:= จริง;
เราผสานเซลล์โดยการตั้งค่าคุณสมบัติ หรือใช้วิธี:
FXlsApp.Selection.ผสาน;
ด้วยวิธีนี้คุณจะได้รับโค้ดสำหรับการจัดการที่จำเป็นเกือบทุกอย่าง
และหากคุณสมบัติหรือวิธีการบางอย่างทำให้เกิดคำถาม คุณสามารถใช้ความช่วยเหลือบน MSDN ได้
โปรดสังเกตลักษณะเฉพาะของการทำงานกับอาร์เรย์ใน วีบีเอ- ดัชนีในอาร์เรย์ใน เดลฟีถูกห่อด้วยวงเล็บเหลี่ยมในขณะที่เข้ามา วีบีเอพวกเขาจะอยู่ในตัวกลม และโค้ดเข้า เดลฟี
FXlsApp.Range["B5:C8"].เลือก;
วี วีบีเอจะมีลักษณะเช่นนี้
ช่วง("D5:H14").เลือก;
ด้านล่างฉันจะให้เล็กน้อย คำถามที่พบบ่อยในประเด็นของการมีปฏิสัมพันธ์กับ เอ็กเซลจาก เดลฟี
จะกำหนดค่าคงที่ใน Excel เพื่อใช้ใน Delphi ได้อย่างไร?
ในบรรณาธิการ วีบีเอเรากำหนดจุดหยุดตรงข้ามกับค่าคงที่ของดอกเบี้ย คลิกดำเนินการ และเมื่อการดำเนินการหยุด ให้ชี้ไปที่ค่าคงที่ที่สนใจ:
จะปิดการใช้งานข้อความเอาต์พุตใน Excel ได้อย่างไร?
FXlsApp.DisplayAlerts:= เท็จ;
จะรับรายชื่อหนังสือจาก Excel ได้อย่างไร?
สำหรับ i:= 1 ถึง FXlsApp.Workbooks.Count ทำ ListBox1.Items.Add(FXlsApp.Workbooks.Item[i].Name);
จะปิดการแสดงตารางได้อย่างไร?
FXlsApp.ActiveWindow.DisplayGridlines:= เท็จ;
จะแสดงแผ่นงานปัจจุบันเป็นตัวอย่างก่อนพิมพ์ได้อย่างไร
FXlsApp.ActiveWindow.SelectedSheets.PrintPreview;
จะทำให้ข้อความในเซลล์เป็นตัวหนาได้อย่างไร?
แถว Var: จำนวนเต็ม; // ดัชนีสตริง Col: จำนวนเต็ม; // ดัชนีเซลล์ TextSelStart: จำนวนเต็ม; // เริ่มจากอักขระ TextSelLength: integer; // จำนวนอักขระที่เลือกเริ่มต้น FXlsApp.Cells.Characters(TextSelStart, TextSelLength).Font.Bold:= True; จบ;
จะปรับความสูงของแถวให้พอดีอัตโนมัติสำหรับเซลล์ที่ติดกาวได้อย่างไร
Var merge_area: ตัวแปร; cell_width, cells_width, i: จำนวนเต็มเริ่มต้น // บันทึกช่วงของเซลล์ที่ผสานลงในตัวแปร merge_area:= FXlsApp.Range["D5"].MergeArea;// บันทึกความกว้างของเซลล์ที่เราจะเลือกความสูง cell_width:= FXlsApp.Range["D5"].ColumnWidth;
cells_width:= 0;
สำหรับ i:= 1 ถึง merge_area.Columns.Count do // รับความกว้างรวมของคอลัมน์ทั้งหมดของช่วงที่ผสาน cells_width:= cells_width + merge_area.Columns[i].ColumnWidth;
// ยกเลิกการผสานเซลล์ merge_area.UnMerge;
// ตั้งค่าความกว้างของเซลล์ที่สนใจเท่ากับความกว้างทั้งหมด FXlsApp.Range["D5"].ColumnWidth:= cells_width;
// เรียก วิธีการมาตรฐานปรับความสูงของแถวให้พอดีอัตโนมัติ FXlsApp.Rows.EntireRow.AutoFit;
// คืนความกว้างเดิมของเซลล์ที่สนใจ FXlsApp.Range["D5"].ColumnWidth:= cell_width;
// กาวช่วงกลับเข้าด้วยกัน merge_area.Merge; จบ;
จะหาเซลล์ที่ใช้แล้วได้อย่างไร?
ผลลัพธ์:= exApp.ActiveSheet.UsedRange;
วิธีรับตัวอักษรคอลัมน์ตามดัชนี
ใช้คณิตศาสตร์; *** ฟังก์ชั่น ColIdxToStr(const Col: integer): string const CharsCount: integer = 26;
ออฟเซ็ต: จำนวนเต็ม = 64; var อันดับ: ไบต์;
Col, Tmp: จำนวนเต็ม; เริ่มต้น ผลลัพธ์:= "";
ในขณะที่ Col > 0 จะเริ่มต้นอันดับ:= 0; Tmp:=สี;ในขณะที่ Tmp > CharsCount จะเริ่มต้น Tmp:= Ceil(Tmp / CharsCount - 1);
Inc(อันดับ);
จบ; ผลลัพธ์:= ผลลัพธ์ + Chr(Tmp + ออฟเซ็ต);
Inc(อันดับ);
Col:= Col - Trunc(กำลัง(CharsCount,อันดับ)) * Tmp;
จบ; จบ;
ใน
รีวิวนี้
Excel.DisplayAlerts:=เท็จ;
แสดงหรือซ่อน Excel บนหน้าจอ:
Excel.Visible:= จริง;
Excel.Visible:= เท็จ;
พิมพ์เนื้อหา แผ่นงานที่ใช้งานอยู่เอ็กซ์เซล:
Excel.ActiveSheet.PrintOut;
การอ่าน/เขียนข้อมูลใน EXCEL
คุณสามารถเข้าถึงเซลล์ในสมุดงาน Excel ปัจจุบันได้ดังนี้:
Excel.Range["b2"]:="สวัสดี!"; // เขียนค่าลงในเซลล์
s:=Excel.ช่วง["b2"]; // อ่านค่าจากเซลล์
โดยที่ b2 คือที่อยู่ของเซลล์
หรือใช้รูปแบบลิงก์ R1C1:
Excel.Range]:="สวัสดี!";
พิกัดของเซลล์อยู่ที่ไหน
เลย เซลล์ Excelคุณสามารถกำหนดค่าใดๆ ก็ได้ (อักขระ จำนวนเต็ม เศษส่วน วันที่) แล้ว Excel จะตั้งค่าการจัดรูปแบบเริ่มต้นในเซลล์
จัดรูปแบบเซลล์ใน EXCEL
คุณสามารถเลือก (เลือก) กลุ่มเซลล์สำหรับงานต่อไปได้ดังนี้:
Excel.Range, Excel.Cells] เลือก;
// ทั้ง
Excel.Range["A1:C5"].เลือก;
ในกรณีนี้ พื้นที่ที่อยู่ระหว่างเซลล์ A1 และ C5 จะถูกเลือก
หลังจากทำการเลือกแล้ว คุณสามารถตั้งค่า:
1) การรวมเซลล์:
Excel.Selection.MergeCells:=จริง;
2) การตัดคำ:
Excel.Selection.WrapText:=จริง;
3) การจัดตำแหน่งแนวนอน:
Excel.Selection.HorizontalAlignment:=3;
เมื่อตั้งค่าเป็น 1 ระบบจะใช้การจัดตำแหน่งเริ่มต้น เมื่อตั้งค่าเป็น 2 การจัดตำแหน่งจะอยู่ทางซ้าย 3 จะอยู่ตรงกลาง และ 4 จะอยู่ทางขวา 4) การจัดตำแหน่งในแนวตั้ง
Excel.Selection.VerticalAlignment:=1;
ค่าที่กำหนดจะเหมือนกับการจัดตำแหน่งแนวนอน
5) เส้นขอบสำหรับเซลล์:
เมื่อตั้งค่าเป็น 1 เส้นขอบเซลล์จะถูกวาดด้วยเส้นทึบบางๆ
นอกจากนี้ คุณสามารถระบุค่าสำหรับคุณสมบัติ Borders ได้ เช่น เท่ากับ 3 จากนั้นจะตั้งค่าเฉพาะเส้นขอบด้านบนสำหรับบล็อกการเลือกเท่านั้น:
Excel.Selection.Borders.LineStyle:=1;
ค่าของคุณสมบัติ Borders ระบุ การรวมกันที่แตกต่างกันขอบเซลล์
ในทั้งสองกรณี คุณสามารถใช้ค่าในช่วงตั้งแต่ 1 ถึง 10
การใช้รหัสผ่านใน EXCEL
การตั้งรหัสผ่านสำหรับสมุดงานที่ใช้งานอยู่สามารถทำได้ดังนี้:
พยายาม
// พยายามตั้งรหัสผ่าน
Excel.ActiveWorkbook.protect("ผ่าน");
ยกเว้น
// การดำเนินการหากความพยายามในการตั้งรหัสผ่านล้มเหลว
จบ;
โดยที่ pass คือรหัสผ่านสำหรับตั้งหนังสือ
การลบรหัสผ่านออกจากหนังสือก็คล้ายกัน ใช้คำสั่ง
Excel.ActiveWorkbook.Unprotect("ผ่าน");
การตั้งค่าและการลบรหัสผ่านสำหรับแผ่นงานที่ใช้งานอยู่ของสมุดงาน Excel ทำได้โดยใช้คำสั่ง
Excel.ActiveSheet.protect("ผ่าน"); //ตั้งรหัสผ่าน
Excel.ActiveSheet.Unprotect("ผ่าน"); // ลบรหัสผ่าน
โดยที่ pass เป็นรหัสผ่านที่ตั้งไว้เพื่อปกป้องหนังสือ
การดำเนินการเสริมใน EXCEL
การลบแถวที่มีการเลื่อนขึ้น (เมื่อดำเนินการเหล่านี้ แถวที่ 5 ถึง 15 จะถูกลบ):
Excel.Rows["5:15"].เลือก;
Excel.การเลือก.ลบ;
การตั้งค่าพื้นที่ที่จะปักหมุดให้ใช้งานอยู่ แผ่นงาน Excel:
// ยกเลิกการตรึงพื้นที่หากตั้งค่าไว้
Excel.ActiveWindow.FreezePanes:=เท็จ;
// เลือก เซลล์ที่ต้องการ, วี ในกรณีนี้ D3
Excel.Range["D3"].เลือก;
// กำหนดพื้นที่ที่จะแช่แข็ง
Excel.ActiveWindow.FreezePanes:=จริง;
สวัสดี ในบทความนี้ ฉันจะบอกวิธีการใช้งานในแอปพลิเคชัน (โปรแกรม) ของคุณ เดลฟี DB ในรูปแบบ เอ็มเอส เอ็กเซล- ใช่ ใช่ เป๊ะเลย เอ็มเอส เอ็กเซล- ไม่มีอะไรซับซ้อนที่นี่ ก่อนอื่น เรามากรอกแผ่นงานของเราใน MS Excel กันก่อน บรรทัดแรกในแต่ละคอลัมน์จะใช้แอปพลิเคชันของเราเป็นชื่อของคอลัมน์เสมอ กล่าวคือ จะไม่ใช้ชื่อของคอลัมน์เช่นนี้ - ก, บี, คและอื่น ๆ ดังนั้นในบรรทัดแรกของคอลัมน์ A และคอลัมน์ B ที่ฉันเขียน ชื่อเต็มและ ระดับตามลำดับสำหรับแต่ละคอลัมน์ นี่จะเป็นหัวข้อของเราจากนั้นฉันกรอกข้อมูลที่จะอยู่ในฐานข้อมูลด้านล่างเขียนชื่อและการให้คะแนนด้วยตัวเอง ดังนั้นฐานข้อมูลของเราจึงพร้อม ตอนนี้เรามาสร้างการเชื่อมต่อกับมันกันดีกว่า การเชื่อมต่อถูกสร้างขึ้นคล้ายกับ เอ็มเอส แอคเซสดังนั้นจึงไม่มีอะไรซับซ้อนที่นี่ ในแบบฟอร์มเรามีส่วนประกอบเก่า:
- TDBGrid
- TADOQuery
- ทาโดคอนเน็คชั่น
- TDataSource
ฉันจะบอกวิธีเชื่อมต่อส่วนประกอบเหล่านี้อย่างรวดเร็วเนื่องจากฉันได้กล่าวไว้แล้ว
- TADOQueryค ทาโดคอนเน็คชั่นในทรัพย์สิน - การเชื่อมต่อ
- TDataSourceกับ TADOQueryในทรัพย์สิน ชุดข้อมูล
- TDBGridค TDataSourceในทรัพย์สิน แหล่งข้อมูล
// เรียก ทาโดคอนเน็คชั่นตั้งค่าคุณสมบัติ ลองพรอมท์วี เท็จ- ดูเหมือนว่า การตั้งค่าขนาดเล็กเสร็จแล้ว. ตอนนี้เรามาถึงการเชื่อมต่อโดยตรง ในทรัพย์สิน ทาโดคอนเน็คชั่น- ConnectionStringคลิกที่ปุ่ม " … “แล้วเราก็จะมีหน้าต่างชมวิว
คลิกที่ปุ่ม " สร้าง..." และหน้าต่างต่อไปนี้จะปรากฏขึ้น
ในหน้าต่างนี้ เลือกผู้ให้บริการต่อไปนี้: ผู้ให้บริการ Microsoft OLE DB สำหรับไดรเวอร์ ODBCและกดปุ่ม " ถัดไป>>" และดูหน้าต่างต่อไปนี้
ในหน้าต่างนี้ ให้วางตัวชี้ไปที่ " ทันที ใช้สตริงการเชื่อมต่อ" และคลิกที่ปุ่ม " การประกอบ“ หลังจากนั้นจะมีหน้าต่างปรากฏขึ้น
ในหน้าต่างนี้ ไปที่แท็บแหล่งข้อมูลคอมพิวเตอร์ ในรายการที่ปรากฏ ให้เลือก - ไฟล์เอ็กเซลหรือคลิกซ้ายที่วันที่นี้ ดับเบิลคลิกและในหน้าต่างที่ปรากฏขึ้นให้ระบุเส้นทางมาที่เรา เอ็กเซล- หนังสือที่เราสร้าง หลังจากนั้นคลิกที่ปุ่ม “ ตกลง- เรามีการเชื่อมต่อทั้งหมดพร้อมแล้ว ฉันต้องการเพิ่มมากขึ้นถ้าคุณมีไฟล์ เอ็กเซลโดยที่ตารางของคุณอยู่ในไดเรกทอรีเดียวกันกับโปรแกรม จากนั้นอยู่ในคุณสมบัติส่วนประกอบ ทาโดคอนเน็คชั่น- ConnectionStringเส้นทางไปยังไฟล์ Excel ของคุณจะถูกจดไว้ ลบเส้นทางและเหลือเพียงชื่อของคุณ เอ็กเซลไฟล์ที่มีนามสกุลและในคุณสมบัติ ฐานข้อมูลเริ่มต้นองค์ประกอบเดียวกันเขียนชื่อของคุณ เอ็กเซล- ไฟล์ที่มีนามสกุล . จากนั้น เมื่อคุณเปิดแอปพลิเคชัน จะไม่มีข้อผิดพลาดในเส้นทางไปยังฐานข้อมูลของคุณที่ระบุอย่างไม่ถูกต้อง ต่อไปใน TDBGridดับเบิลคลิกแล้วสร้าง 2 แถวในหน้าต่างที่ปรากฏขึ้น ซึ่งจะเป็นคอลัมน์ของเรา และสร้างขึ้นโดยคลิกที่ปุ่ม “ เพิ่มใหม่ (Ins)- ต่อไป ให้เลือกแต่ละบรรทัดในคุณสมบัติ FieldName สำหรับบรรทัดแรกเราจะเขียน - ชื่อเต็มตั้งแต่ใน เอ็กเซล-file นี่คือวิธีที่ฉันเขียนชื่อคอลัมน์ในบรรทัดแรก (สำหรับเซลล์ A1ฉันเขียนแบบนี้) และโดยเน้นบรรทัดที่สองที่สร้างขึ้นมา TDBGrid, ในทรัพย์สิน ชื่อฟิลด์มาเขียนกันเถอะ - ระดับเนื่องจากฉันเป็นคนเขียนชื่อคอลัมน์นี้ (ในเซลล์ A2ฉันเขียนแบบนั้น) ตอนนี้เราสามารถเปิดใช้งานข้อมูลของเราได้แล้ว สำหรับงานนี้ แบบฟอร์มหลัก — OnCreateมาเขียนสิ่งต่อไปนี้กัน
อย่างที่คุณเห็น แบบสอบถามเดียวกัน แทนที่จะเป็นชื่อของตารางเท่านั้น ตามที่เรามี เอ็มเอส แอคเซสเราระบุชื่อแผ่นงานของเรามา เอ็กเซลโดยปิดไว้ในวงเล็บเหลี่ยมและลงท้ายด้วย $ - อย่างที่คุณเห็นไม่มีอะไรซับซ้อน ในบทความถัดไปเกี่ยวกับฐานข้อมูล เอ็มเอส เอ็กเซลฉันจะบอกวิธีแทรกข้อมูล แก้ไข และอื่นๆ
ฉันอยากจะทราบว่าหากคุณเป็นแฟนฟุตบอลตัวจริงและโดยเฉพาะอย่างยิ่งการแข่งขันชิงแชมป์อังกฤษที่กำลังดำเนินอยู่ ในขณะนี้เป็นหนึ่งในผู้ที่แข็งแกร่งที่สุด แล้วคุณคงจะสนใจอ่านเกี่ยวกับสโมสรฟุตบอลเป็นอย่างมาก |
เราดูในนิกาย 6.4.2 การดำเนินงานขั้นพื้นฐานที่เกี่ยวข้องกับหนังสือ ตอนนี้เรามาดูการดำเนินการกับแผ่นหนังสือกันดีกว่า คอลเลกชันของแผ่นงานมีอยู่ในคุณสมบัติแผ่นงานของออบเจ็กต์หนังสือ คอลเลกชันนี้มีคุณสมบัติคล้ายคลึงกับคอลเลกชันสมุดงานที่กล่าวถึงก่อนหน้านี้ สามารถเข้าถึงแผ่นงานได้โดยดัชนีหรือตามชื่อ ตัวอย่างเช่น ข้อความต่อไปนี้เมื่อทำงานกับเซิร์ฟเวอร์ COM ให้เปิดและเปิดใช้งานแผ่นงานแรกของสมุดงานที่แสดงโดยวัตถุ Excel Workbook 1 ส่งตัวชี้ไปยังแผ่นงานนี้ไปยังตัวแปรแผ่นงาน Excel 1 และเปิดใช้งานแผ่นงาน เช่น ไฮไลต์ในหน้าต่าง Excel:
ExcelWorksheetl:= ExcelWorkbookl.Worksheets เป็น ExcelWorksheet; ExcelWorksheetl.เปิดใช้งาน(LOCALE_USER_DEFAULT);
ExcelWorksheetl:= ExcelWorkbookl.แผ่นงาน; ExcelWorksheetl.เปิดใช้งาน;
คุณสมบัติแผ่นงานยังมีอยู่บนวัตถุเซิร์ฟเวอร์ด้วย คุณสมบัตินี้ใช้กับสมุดงานที่ใช้งานอยู่ ดังนั้นคำสั่งต่อไปนี้เมื่อทำงานกับเซิร์ฟเวอร์ COM ให้ดำเนินการกับสมุดงานที่ใช้งานอยู่โดยการเปิดและเปิดใช้งานแผ่นงานในนั้นซึ่งมีการระบุชื่อ (เช่น "Sheet1") ในหน้าต่างแก้ไข Editl:
แผ่นงานเป็น ExcelWorksheet; ExcelWorksheetl.Activate (ค่าเริ่มต้นของผู้ใช้ท้องถิ่น);
เมื่อทำงานกับเซิร์ฟเวอร์อัตโนมัติของ OLE คำสั่งที่คล้ายกันจะมีลักษณะดังนี้:
ExcelWorksheetl:= ExcelApplicationl.แผ่นงาน; ExcelWorksheetl.เปิดใช้งาน;
ถ้าเป็นแผ่นด้วย ชื่อที่กำหนดไม่มีอยู่ในหนังสือ จะมีการยกเว้นไว้ ดังนั้นหากมีอันตรายดังกล่าวควรจับข้อยกเว้นนี้ไว้ เช่น
ExcelWorksheetl:= แอปพลิเคชัน Excel
แผ่นงานเป็น ExcelWorksheet; ExcelWorksheetl.เปิดใช้งาน(LOCALE_USER_DEFAULT); ยกเว้น
ShowMessage("เราไม่สามารถเปิดแผ่นงาน "" + Editl.Text + """); จบ;
เพิ่ม ใบใหม่ลงในสมุดงานโดยใช้วิธีเพิ่มของวัตถุแผ่นงาน:
เพิ่มฟังก์ชัน (ก่อน: OleVariant; หลัง: OleVariant; จำนวน: OleVariant; Type_: OleVariant; lcid: จำนวนเต็ม): IDispatch;
พารามิเตอร์ก่อนหรือหลังคือวัตถุแผ่นงานก่อนหรือหลังการแทรกเกิดขึ้น โดยปกติแล้ว การตั้งค่าเพียงหนึ่งพารามิเตอร์เหล่านี้และตั้งค่าอีกพารามิเตอร์หนึ่งเป็น EmptyParam ก็เพียงพอแล้ว หากพารามิเตอร์ทั้งสองเท่ากับ EmptyParam แผ่นงานใหม่จะถูกแทรกก่อนแผ่นงานที่ใช้งานปัจจุบัน พารามิเตอร์ Count ระบุจำนวนแผ่นงานที่จะแทรก หากพารามิเตอร์นี้เท่ากับ EmptyParam แสดงว่ามีการแทรกหนึ่งแผ่นงาน พารามิเตอร์ Type__ กำหนดประเภทการแทรก เมื่อตั้งค่าเป็น EmptyParam แผ่นงานเปล่าใหม่จะถูกแทรก
ตัวอย่างเช่น รหัสต่อไปนี้ เมื่อทำงานกับเซิร์ฟเวอร์ COM ให้แทรกแผ่นงานใหม่หนึ่งแผ่นก่อนแผ่นงานที่ใช้งานอยู่ของสมุดงานที่ใช้งานอยู่ และส่งตัวชี้ไปยังตัวแปร ExcelWorksheetl:
EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT) เป็น ExcelWorksheet;
และโค้ดต่อไปนี้จะแทรกแผ่นงานใหม่สองแผ่นหลังแผ่นงานที่สามของสมุดงานที่ใช้งานอยู่:
ภายหลัง, หมายเลข: OleVariant; หลัง:= ExcelApplicationl.Worksheets; หมายเลข:= 2;
ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add(
EmptyParam,After,Num,EmptyParam, LOCALE_USER_DEFAULT) เป็น ExcelWorksheet;
เมื่อทำงานกับเซิร์ฟเวอร์อัตโนมัติของ OLE คำสั่งที่คล้ายกันจะมีลักษณะดังนี้:
ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add;
ExcelWorksheetl:= ExcelApplicationl.Worksheets.Add(
หลัง:= ExcelApplicationl.Worksheets, จำนวน:= 2);
ชื่อของแผ่นงานที่แทรกหรือแผ่นงานที่มีอยู่สามารถเปลี่ยนแปลงได้โดยใช้คุณสมบัติชื่อ ตัวอย่างเช่น:
ExcelWorksheetl.Name:= "ใบแจ้งหนี้"; คุณสามารถลบแผ่นงานออกจากสมุดงานโดยใช้วิธีการลบ:
ExcelWorksheetl.Delete(LOCALE_USER_DEFAULT);
คุณสามารถพิมพ์แผ่นงานโดยใช้วิธีการพิมพ์ ซึ่งไม่แตกต่างจากวิธีการที่คล้ายกันที่อธิบายไว้ก่อนหน้านี้สำหรับหนังสือ เช่น การพิมพ์ หน้าปัจจุบันเมื่อทำงานกับเซิร์ฟเวอร์ COM สามารถออกแบบได้ดังนี้:
ExcelWorksheetl:= ExcelApplicationl.ActiveSheet เป็น ExcelWorksheet; ExcelWorksheetl.Printout (EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);
เมื่อทำงานกับเซิร์ฟเวอร์อัตโนมัติ OLE มันจะง่ายกว่า:
ExcelWorksheetl:= ExcelApplicationl.ActiveSheet; ExcelWorksheetl.งานพิมพ์;
คุณสามารถดูตัวอย่างแผ่นงานก่อนที่จะพิมพ์โดยใช้วิธี PrintPreview:
ขั้นตอน PrintPreview (เปิดใช้งานการเปลี่ยนแปลง: OleVariant; leid: Integer);
พารามิเตอร์ EnableChanges ระบุว่าสามารถทำการเปลี่ยนแปลงในขณะที่ดูได้หรือไม่ ตัวอย่างเช่น ข้อความต่อไปนี้ระบุเมื่อทำงานกับเซิร์ฟเวอร์ COM ดูตัวอย่างแผ่นงานที่ใช้งานอยู่ของหนังสือ:
(ExcelApplicationl.ActiveSheet เป็น ExcelWorksheet)
PrintPreview (จริง, LOCALE_USER_DEFAULT);
สำหรับเซิร์ฟเวอร์ OLE คำสั่งที่คล้ายกันจะมีลักษณะดังนี้:
ExcelApplicationl.ActiveSheet;PrintPreview(จริง);
คุณสามารถหยุดในแต่ละขั้นตอนของโมเดลนี้และศึกษาได้เป็นเวลาหลายเดือน หากมีความจำเป็นต้องศึกษาคุณสมบัติและวิธีการเพิ่มเติมเป็นพิเศษเราจะกลับมาศึกษาอย่างแน่นอน ตอนนี้เรามาเริ่มต้นทำงานใน Delphi ด้วยแผ่นงานสมุดงานกันดีกว่า
2. จะเปิดใช้งานแผ่นงานสมุดงาน Excel ได้อย่างไร?
ดังที่คุณทราบเมื่อสร้างสมุดงานเปล่า เอ็กเซล จะเพิ่ม 3 ลงในหนังสือเล่มนี้โดยอัตโนมัติ แผ่นเปล่า- หากต้องการทำงานกับแผ่นงานเฉพาะ ( แผ่นงานหรือเพียงแค่ แผ่น) ต้องเปิดใช้งานแผ่นงานนี้ วิธีหนึ่งในการเปิดใช้งานแผ่นงานสมุดงาน เอ็กเซล วี เดลฟี ดูเหมือนว่านี้:
สตริงทรัพยากร rsEInvalidSheetIndex = "ดัชนีที่ระบุสำหรับ WorkBooks ไม่ถูกต้อง การเปิดใช้งานแผ่นงานถูกยกเลิก"- rsEInvalidSheetActivate= "การเปิดใช้งานแผ่นงานเสร็จสมบูรณ์โดยมีข้อผิดพลาด"- ฟังก์ชั่น ActivateSheet(WBIndex: integer ; SheetName: string ) : boolean ;
var i: จำนวนเต็ม ; เริ่มต้น ผลลัพธ์ : = false ;ถ้า WBIndex > MyExcel. หนังสืองาน. นับแล้วเพิ่มข้อยกเว้น สร้าง (rsEInvalidSheetIndex);
ลอง i : = 1 ถึง MyExcel สมุดงาน [WBIndex] ชีต นับ ทำ if AnsiLowerCase (MyExcel. WorkBooks [ WBIndex]. Sheets . Item [ i]. Name ) = AnsiLowerCase (SheetName) จากนั้นเริ่ม MyExcel. สมุดงาน [WBIndex] ชีต รายการ[i] เปิดใช้งาน ; ผลลัพธ์: = จริง; หยุดพัก; จบ ; ยกเว้นยกข้อยกเว้น สร้าง (rsEInvalidSheetActivate);จบ ; จบ ;
ที่นี่ พารามิเตอร์ฟังก์ชันจะถูกตั้งค่าเป็นดัชนีสมุดงาน (WBIndex) ในคอลเลกชัน
เอ็กเซลของฉัน ActiveWorkBook. ชีต รายการ[i] เปิดใช้งาน ;
ตอนนี้เรามาดูวิธีการที่วัตถุใช้ให้ละเอียดยิ่งขึ้น แผ่นงาน.
3. วิธีการแผ่นงาน Excel
ตอนนี้เรามาดูวัตถุโดยละเอียดมากขึ้น แผ่นงาน.
รูปนี้แสดงวิธีการต่างๆ ที่ผมเคยใช้ในการทำงาน
วัตถุทั้งหมด แผ่นงานผลรวม 30 วิธีการต่าง ๆ ที่คุณสามารถใช้ได้
วิธี | คำอธิบาย |
เปิดใช้งาน | ทำให้แผ่นงานปัจจุบันใช้งานได้ เราได้พูดคุยถึงวิธีการทำงานแล้ว |
คำนวณทุกอย่าง เปิดหนังสือ, แผ่นงานเฉพาะในหนังสือหรือ ช่วงที่กำหนดเซลล์บนแผ่นงาน | |
ตรวจสอบการสะกดบนแผ่นงานที่เลือก | |
บันทึกการเปลี่ยนแปลงทั้งหมดในไฟล์ | |
ลบแผ่นงานปัจจุบัน แผ่นงาน | |
การเลือกแผ่นงาน | |
คัดลอกแผ่นงานไปยังตำแหน่งอื่นในสมุดงาน | |
วางเนื้อหาของคลิปบอร์ดลงในแผ่นงาน | |
ส่งคืนวัตถุที่แสดงถึงไดอะแกรมเดียว (object ChartObject ChartObjects) บนแผ่นงาน | |
การเคลื่อนย้ายแผ่นงาน วิธีนี้คล้ายกับวิธีการนี้ สำเนา- ข้อแตกต่างเพียงอย่างเดียวคือหลังจากวาง แผ่นงานที่คัดลอกจะถูกลบออกจากหนังสือ |
ให้เราพิจารณาแต่ละวิธีที่นำเสนอข้างต้น
ด้านล่างเช่น การแสดงออกแผ่นควรยื่นออกมา ( แผ่นงาน) เว้นแต่จะระบุไว้เป็นอย่างอื่น
วิธีการคำนวณ
คำนวณเวิร์กบุ๊ก แผ่นงาน หรือช่วงของเซลล์
เป็นที่น่าสังเกตว่าการเรียกวิธีการ คำนวณเป็นไปได้ไม่เพียงแต่สำหรับแผ่นงานเฉพาะในสมุดงาน Excel เท่านั้น ลองดูตัวเลือกสำหรับการเรียกวิธีคำนวณ
var MyExcel: OleVariant;
เอ็กเซลของฉัน คำนวณ
ข้อมูลโค้ดด้านล่างนี้จะคำนวณแผ่นงานที่ใช้งานอยู่
เอ็กเซลของฉัน ActiveWorkBook. ActiveWorkSheet. คำนวณ
มาคำนวณสูตรทั้งหมดในคอลัมน์ A, B และ C:
เอ็กเซลของฉัน ActiveWorkBook. ActiveWorkSheet. ใช้ช่วง. คอลัมน์("A:C") คำนวณ
วิธีการตรวจสอบการสะกด
การเรียกเมธอดมีลักษณะดังนี้:. การแสดงออกตรวจสอบการสะกด (พจนานุกรมแบบกำหนดเอง, ละเว้นตัวพิมพ์ใหญ่, แนะนำเสมอ, SpellLang) การแสดงออกขณะเดียวกัน. แผ่นงาน).
แผ่นควรยื่นออกมา ( | พารามิเตอร์ | คำอธิบาย |
พิมพ์ | ตัวแปร | พจนานุกรมแบบกำหนดเองกับ |
สตริงที่ระบุชื่อของไฟล์พจนานุกรมผู้ใช้ที่จะพิจารณาหากไม่พบคำนั้นในพจนานุกรมหลัก หากละเว้นอาร์กิวเมนต์นี้ ระบบจะใช้พจนานุกรมเริ่มต้น | ตัวแปร | ละเว้นตัวพิมพ์ใหญ่จริง ถ้าจำเป็นก็เช่นนั้น ไมโครซอฟต์ เอ็กเซล เท็จข้ามคำที่เขียนด้วยตัวพิมพ์ใหญ่ เพื่อ ไมโครซอฟต์ เอ็กเซล ตรวจสอบทุกคำ หากละเว้นข้อโต้แย้งนี้แล้วการตั้งค่าปัจจุบัน |
เอ็กเซล | ตัวแปร | ละเว้นตัวพิมพ์ใหญ่แนะนำเสมอ เพื่อ เพื่อที่จะ เท็จแสดงรายการคำแนะนำสำหรับการสะกดคำอื่นๆ เมื่อตรวจพบคำที่สะกดผิด เพื่อ , ถึง กำลังรอการป้อนข้อมูล- หากละเว้นอาร์กิวเมนต์นี้ ระบบจะใช้การตั้งค่าปัจจุบัน |
SpellLang | ตัวแปร | ภาษาพจนานุกรม สามารถรับค่าของค่าคงที่ตัวใดตัวหนึ่งได้ MsoLanguageID เช่น สำหรับภาษารัสเซีย สะกดภาษา = 1,049, สำหรับภาษาอังกฤษ (สหรัฐอเมริกา) SpellLang = 1,033ฯลฯ รายละเอียดเพิ่มเติมเกี่ยวกับตัวระบุภาษา |
จะตรวจสอบไวยากรณ์บนแผ่นงาน Excel ใน Delphi ได้อย่างไร
เอ็กเซลของฉัน ActiveWorkBook. ActiveWorkSheet. ตรวจสอบการสะกด(CustomDictionary:=EmptyParam, IgnoreUppercase:=false, AlwaysSuggest:=EmptyParam, SpellLang:=1033)
ในกรณีนี้ เอ็มเอส เอ็กเซล จะตรวจสอบชีตปัจจุบันรวมถึงตรวจสอบคำจาก ตัวพิมพ์ใหญ่- ภาษาที่ใช้ยืนยันคือภาษารัสเซีย โปรดทราบว่าเพื่อที่จะเรียกใช้เมธอด เราได้ระบุอย่างชัดเจนว่าพารามิเตอร์ใดที่จะกำหนดค่าใด ยิ่งกว่านั้น เพื่อที่จะข้ามพารามิเตอร์ใด ๆ เราใช้ ว่างเปล่าพารามิเตอร์(พารามิเตอร์ว่าง) ซึ่งอยู่ใน เดลฟี แสดงถึง ตัวแปรประเภท โอเล่วาเรียนท์.
เป็นที่ชัดเจนว่าวิธีการเรียกวิธีการนี้ (โดยระบุพารามิเตอร์ทั้งหมดอย่างชัดเจน) ไม่สะดวกสำหรับคุณโดยสิ้นเชิงและไม่ได้รับการฝึกฝนอย่างกว้างขวางในการเขียนโปรแกรมเป็นภาษาอังกฤษ เดลฟี แต่อย่างไรก็ตาม นี่เป็นวิธีเดียวและไม่มีวิธีอื่นในการเรียกวิธีการที่ใช้ เอ็กเซล .
วิธีการบันทึกเป็น
การบันทึกแผ่นงานแผ่นงาน Excel
การเรียกวิธีการ:
expression.SaveAs(ชื่อไฟล์, รูปแบบไฟล์, รหัสผ่าน, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)แผ่นควรยื่นออกมา ( | พารามิเตอร์ | คำอธิบาย |
ชื่อไฟล์ | ตัวแปร | สตริงที่แสดงชื่อของไฟล์ที่จะบันทึก จะต้องระบุ เส้นทางเต็มลงในไฟล์ มิฉะนั้นไฟล์จะถูกบันทึกลงในโฟลเดอร์ เอ็กเซล . |
FileFormat | ตัวแปร | รูปแบบไฟล์ที่ใช้ในการบันทึก ตามค่าเริ่มต้น ไฟล์จะถูกบันทึกในรูปแบบที่คุณเลือก ครั้งสุดท้ายวี เอ็กเซล |
รหัสผ่าน | ตัวแปร | รหัสผ่านสำหรับไฟล์ (ไม่เกิน 15 ตัวอักษร) รหัสผ่านต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
WriteResPassword | ตัวแปร | รหัสผ่านที่จะใช้ในการเปลี่ยนแปลงสมุดงาน หากไม่ได้ระบุรหัสผ่าน หนังสือจะถูกเปิดในโหมดอ่านอย่างเดียว |
อ่านอย่างเดียวแนะนำ | ตัวแปร | ถ้าพารามิเตอร์เท่ากัน ละเว้นตัวพิมพ์ใหญ่จากนั้นเมื่อเปิดไฟล์จะมีข้อความปรากฏขึ้นบนหน้าจอแนะนำให้เปิดไฟล์แบบอ่านอย่างเดียว |
สร้างการสำรองข้อมูล | ตัวแปร | ละเว้นตัวพิมพ์ใหญ่เพื่อสร้างไฟล์สำรอง |
AddToMru | ตัวแปร | ละเว้นตัวพิมพ์ใหญ่เพื่อเพิ่มชื่อไฟล์ที่บันทึกไว้ในรายการล่าสุด เปิดไฟล์ในเมนูหลัก เอ็กเซล |
ข้อความรหัสเพจและ ข้อความ VisualLayout | ตัวแปร | ไม่ได้ใช้ในปัจจุบันและเก็บรักษาไว้เพื่อความเข้ากันได้แบบย้อนหลัง |
ท้องถิ่น | ตัวแปร | ไม่ พารามิเตอร์ที่จำเป็นโดยค่าเริ่มต้นจะเท่ากับ เท็จ.ความหมาย ละเว้นตัวพิมพ์ใหญ่- บันทึกไฟล์จาก ภาษาไมโครซอฟต์ Excel (รวมถึงการตั้งค่าแผงควบคุม) |
MyExcel.ActiveWorkBook.ActiveWorkSheet.SaveAs("C\:MyExcelFile.xls")
ในกรณีนี้ การตั้งค่าเริ่มต้นจะถูกใช้เมื่อทำการบันทึก
หากคุณต้องการประหยัด ไฟล์เอ็กเซลในรูปแบบอื่น จากนั้นในพารามิเตอร์ FileFormatคุณสามารถใช้ค่าตัวแจงนับค่าใดค่าหนึ่งได้ xlFileFormat - ความหมายบางอย่าง xlFileFormat ดังแสดงในตารางด้านล่าง:
ชื่อ | ความหมาย | คำอธิบาย | นามสกุลไฟล์ |
xlCSV | 6 | ซีเอสวี | *.csv |
xlExcel8 | 56 | สมุดงาน Excel 97-2003 | *.xls |
xlHtml | 44 | รูปแบบ HTML | *.htm; *.HTML |
xlOpenDocumentSpreadsheet.xls | 60 | สเปรดชีต OpenDocument | *.ods |
xlOpenXMLWorkbook.xlsx | 51 | เปิดหนังสือ XML | *.xlsx |
มาเขียนขั้นตอนเล็ก ๆ ที่ให้คุณบันทึกแผ่นงาน Excel ในรูปแบบต่างๆ:
constxlCSV = 6 ; xlExcel8 = 56 ; xlHtml = 44 ;
xlOpenDocumentSpreadsheet = 60 ;
xlOpenXMLWorkbook = 51 ;
สตริงทรัพยากร rsESaveActiveSheet =
"เกิดข้อผิดพลาดในการบันทึกแผ่นงานที่ใช้งานอยู่"
- ขั้นตอน SaveAs (const AFileName: TFileName; AFileFormat: integer ) ;
เริ่มลองใช้ MyExcel ActiveWorkBook. ActiveSheet. บันทึกเป็น(AFileName, AFileFormat);
การเรียกวิธีการ:
ยกเว้นยกข้อยกเว้น สร้าง(rsESaveActiveSheet);จบ ; จบ ; ลบวิธีการลบแผ่นงาน Excel MyExcel.ActiveWorkBook.WorkSheets.Item.Selectเลือกแผ่นงานที่สามของสมุดงาน
วิธีการคัดลอก
คัดลอกแผ่นงานไปยังตำแหน่งอื่นในสมุดงาน
expression.Copy (ก่อน, หลัง)
อย่างไรก็ตามหากคุณใช้พารามิเตอร์
ก่อน
การเรียกวิธีการ:
แล้วคุณไม่ควรใช้หลังจาก
และในทางกลับกัน ฉันขอดึงความสนใจของคุณไปที่ข้อเท็จจริงที่ว่านี่คือ SHEET ที่ระบุไม่ใช่ดัชนีชีต
วิธีคัดลอกแผ่นงาน Excel ไปยัง Delphi MyExcel.ActiveWorkBook.WorkSheets.Item.Copy (หลัง:= MyExcel.ActiveWorkBook.WorkSheets.Item).
ในกรณีนี้ แผ่นงานแรกจะถูกคัดลอกและวางหลังจากแผ่นงานที่สาม ChartObjects
วิธีการวาง ChartObjectวางเนื้อหาของคลิปบอร์ดลงในแผ่นงาน Excel ChartObjects expression.Paste(ปลายทาง, ลิงก์)
การเรียกวิธีการ:
วิธีวางเนื้อหาคลิปบอร์ดลงในแผ่นงาน Excel ใน DelphiMyExcel.ActiveWorkBook.ActiveSheet.Paste(Destination:=MyExcel.ActiveWorkBook.ActiveSheet.Range("D1:D5"))
ในกรณีนี้ เนื้อหาของบัฟเฟอร์จะถูกแทรกลงในคอลัมน์ D ในแถวที่ 1 ถึง 5 ควรสังเกตว่าหากเนื้อหาของบัฟเฟอร์ไม่ตรงตามเงื่อนไข เช่น มีเพียง 1 หมายเลขในบัฟเฟอร์ แล้ว
สถานการณ์พิเศษ
วิธี
การย้ายแผ่นงาน วิธีการนี้คล้ายกับ. ข้อแตกต่างเพียงอย่างเดียวคือหลังจากวาง แผ่นงานที่คัดลอกจะถูกลบออกจากหนังสือ
นี่คือส่วนหนึ่งของวิธีการที่ฉันเคยใช้เมื่อทำงานด้วย เอ็กเซล วี เดลฟี - โดยทั่วไปอาจกล่าวได้ว่าใน เดลฟี สามารถควบคุมได้ เอ็มเอส เอ็กเซล ไม่เลวร้ายไปกว่าการทำงานโดยตรงกับแอปพลิเคชันนี้สิ่งสำคัญคืออย่าลืมว่าวิธีการหรือทรัพย์สินใดรับผิดชอบต่อสิ่งใด :) เพื่อไม่ให้ลืม ฉันได้สร้าง MindMap ขนาดเล็กขึ้นมา ซึ่งฉันจะเสริมและอัปเดตเป็นระยะๆ เมื่อคลิกที่ลิงค์ คุณจะเห็นออบเจ็กต์ Excel วิธีการที่ใช้ พารามิเตอร์ของวิธีการ และประเภทตามนั้น ประเภทเดลฟี- โดยทั่วไป แผ่นโกงกราฟิกขนาดเล็กสำหรับผู้ที่ต้องการปรับแต่ง Excel ใน Delphi