Delphi tìm ra tên của một bảng tính trong excel. Làm việc với EXCEL từ Delphi

Trao đổi dữ liệu với MS Excel V. Delphi với sự giúp đỡ OLE.

Các đồng nghiệp thân mến!

Sớm muộn gì chúng ta cũng phải đối mặt với nhiệm vụ trao đổi dữ liệu với các ứng dụng trọn gói bộ phần mềm Microsoft Office. Một trong số đó là MS Excel. Và đặc biệt về tương tác với sản phẩm này bộ phần mềm Microsoft Office sẽ được thảo luận trong bài viết này.

Một cách để tương tác Delphi c MS Excel- là kết nối với nó như OLE sự vật.

Vì thế.
Trước hết, để làm việc với MS ExcelOLE thêm vào phần Công dụng mô-đun ComObjActiveX.

Và điều đầu tiên chúng ta cần kiểm tra là nó đã được cài đặt chưa MS Excel về nguyên tắc trên máy tính của người dùng.
Để làm điều này, chúng ta sẽ sử dụng hàm CLSIDTừProgID, trông trong sổ đăng ký CLSID cho người được truyền đi ID chương trình:
Trợ giúp từ MSDN: Phương pháp CLSIDTừProgID
Tùy chọn:
pszProgID: CựcStr- Một chuỗi có tên của đối tượng
csid: TCLSID- Con trỏ tới cấu trúc TGUID mà đối tượng tìm thấy được chuyển đến;
Trả về:
kết quả- Kết quả có thể nhận các giá trị sau:
S_OK- đối tượng được tìm thấy;
CO_E_CLASSSTRING- Đăng ký CLSIDID chương trình không có hiệu lực;
REGDB_E_WRITEREGDB- Viết sai CLSID vào sổ đăng ký.
Từ kết quả đã liệt kê chúng ta cần S_OK.
Hãy viết hàm để xác định sự có mặt Excel từ người dùng:

Hàm IsXlsInstall: boolean; hoặc CLSID: TCLSID; bắt đầu Kết quả:= (CLSIDFromProgID("Excel.Application", CLSID) = S_OK); kết thúc;

Nếu như Excelđã cài đặt rồi hãy kết nối với nó. Bạn có thể làm điều này theo hai cách: GetActiveOleObject- Nhận liên kết đến một phiên bản đang chạy Excel hoặc TạoOleObject- Tạo một thể hiện mới Excel.
Nếu chúng ta có nhiệm vụ nhận dữ liệu từ một máy đang chạy Excel, thì chúng ta chỉ nên sử dụng tùy chọn đầu tiên, trong các trường hợp khác, chúng ta cố gắng kết nối và nếu điều đó không hiệu quả thì chúng ta sẽ tạo nó.
Hãy viết 2 hàm để kết nối XlsConnect và ra mắt một cái mới XlsBắt đầu:
Hãy thêm một biến Ứng dụng FXls với loại Khác nhau, sẽ chứa một tham chiếu đến đối tượng Excel.

FXlsApp riêng tư: biến thể; *** hàm XlsConnect: boolean; bắt đầu Kết quả:= Sai; thử FXlsApp:= GetActiveOleObject("Excel.Application"); Kết quả:= Đúng; ngoại trừ kết thúc; kết thúc; thủ tục XlsStart; bắt đầu FXlsApp:= CreateOleObject("Excel.Application"); kết thúc;

Bây giờ bạn có thể thêm một nút, khi nhấp vào chúng tôi sẽ kết nối với MS Excel sử dụng các hàm viết:

Quy trình btnConnectClick(Người gửi: TObject); bắt đầu nếu không phải IsXlsInstall thì raise Exception.Create("Không tìm thấy ứng dụng MS Excel trên máy tính này!"); nếu không phải XlsConnect thì XlsStart; FXlsApp.Visible:= True; end;

Cửa sổ mặc định Excel bắt đầu vào lý lịch. Đường kẻ FXlsApp.Visible:= Đúng; tạo một cửa sổ nền Excel dễ thấy.

Cửa sổ Excel nó bắt đầu trống và cần được thêm vào nó sách bài tập. Điều này được thực hiện bằng cách sử dụng phương pháp WorkBooks.Add thêm vào sách mới hoặc mở một tệp đã lưu trước đó nếu bạn chỉ định đường dẫn đến tệp.
Hãy thêm một thủ tục sẽ thực hiện việc này:

Quy trình XWorkbookAdd(const FilePath: string = ""); bắt đầu FXlsApp.WorkBooks.Add(FilePath); kết thúc;

Cuốn sách đã được thêm vào, bây giờ chúng ta hãy thử viết điều gì đó vào đó nhé.

FXlsApp.Cells := "Chuỗi thử nghiệm";

Ở đâu Hàng ngang là chỉ số hàng và Col— chỉ mục cột bắt đầu bằng một.

FXlsApp.Range["A1"] := "Ô A1";

Ở đâu Phạm vi là một mảng các ô và A1- quen thuộc với Excel tọa độ ô.
Một phạm vi có thể được chỉ định làm tọa độ. Ví dụ, mã

FXlsApp.Range["A3:A10"] := 5;

sẽ điền vào tất cả các ô bằng số 5 A3 Qua A10, và mã

FXlsApp.Range["A3:A10"].Interior.Color:= clMoneyGreen;

sẽ làm nổi bật phạm vi tương tự bằng màu xanh nhạt.
TRONG mặt trái, nghĩa là, để lấy dữ liệu từ Excel, hoạt động tương tự. Đường kẻ

ShowMessage(FXlsApp.Cells);

Sẽ hiển thị thông báo có nội dung của ô có tọa độ: Row=5, Column=1.

Sau khi thực hiện xong các thao tác cần thiết với Excel, chúng ta có thể lưu sách kết quả vào một tệp bằng lệnh sau:

FXlsApp.ActiveWorkbook.SaveAs("C:\Test.xlsx");

Ở đâu Sổ làm việc đang hoạt động- cuốn sách hiện tại.
Và đóng ứng dụng Excel yêu cầu:

FXlsApp.Quit;

Bạn hiểu các tùy chọn kiểm soát này như thế nào? Excel từ Delphi không bị giới hạn. Và có một cách khá đơn giản để tìm ra cách thực hiện hành động cần thiết với Excel từ Delphi.
Nó được gọi là Macro.

Hãy tưởng tượng rằng chúng ta cần hợp nhất nhiều ô thành một và chúng ta không biết cách thực hiện. Nhưng chúng tôi muốn tìm hiểu. Để làm điều này, chúng tôi thực hiện các bước sau:
1. Khởi chạy Excel và tạo một cuốn sách trống.
2. Chạy lệnh “Record Macro”, mặc định tên macro sẽ là “Macro1”. (TRONG phiên bản khác nhau Excel lệnh này nằm trong các mục menu khác nhau).
3. Chọn một phạm vi ô nhất định và nhấp vào nút “Hợp nhất và đặt vào giữa”.
4. Dừng ghi macro.
5. Mở danh sách macro và chọn macro đã ghi của bạn ở đó.
6. Nhấp vào nút “Thay đổi”
Trình soạn thảo bắt đầu Microsoft Visual Cơ bản cho ứng dụng trong đó chúng ta thấy mã của các hành động được thực hiện:

Sub Macro1() " " Macro1 Macro " Có lựa chọn .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = Kết thúc sai với lựa chọn .Hợp nhất kết thúc phụ

Chúng ta hãy xem xét kỹ hơn những gì anh ấy đã viết cho chúng tôi ở đây:
Với sự lựa chọn— Đối với phạm vi ô đã chọn, đặt thuộc tính:
Căn chỉnh theo chiều ngang = xlCenterHướng ngang= trung tâm.
Căn chỉnh dọc = xlBottom— Hướng dọc — dọc theo cạnh dưới.
WrapText = Sai— Tính năng ngắt dòng văn bản bằng từ bị tắt.
Định hướng = 0- Định hướng 0 độ.
Thêm thụt lề = Sai— Sử dụng bật/tắt thụt lề tự động.
Mức thụt lề = 0- Thụt lề mức 0.
ShrinkToFit = Sai— Nén văn bản để vừa bật/tắt cột.
Thứ tự đọc = xlContext- Thứ tự đọc theo ngữ cảnh.
Hợp nhất các tế bào = Sai- Bật/tắt các ô đã hợp nhất
Kết thúc với— Kết thúc phần công việc với phạm vi đã chọn.
Lựa chọn.Hợp nhất- Hợp nhất phạm vi đã chọn.

Bây giờ hãy thử hợp nhất các ô từ Delphi:

Chúng tôi chọn phạm vi chúng tôi cần.

FXlsApp.Selection.MergeCells:= True;

Chúng tôi hợp nhất các ô bằng cách đặt thuộc tính. Hoặc sử dụng phương pháp:

FXlsApp.Selection.Merge;

Bằng cách này, bạn có thể lấy được mã cho hầu hết mọi thao tác cần thiết.
Và nếu một số thuộc tính hoặc phương pháp đặt ra câu hỏi, bạn có thể sử dụng trợ giúp trên MSDN.

Xin lưu ý tính đặc thù của việc làm việc với mảng trong VBA. Chỉ mục trong mảng trong Delphiđược gói trong dấu ngoặc vuông, trong khi ở VBA chúng sẽ ở dạng tròn. Và mã trong Delphi

FXlsApp.Range["B5:C8"].Chọn;

V. VBA sẽ trông giống như

Phạm vi("D5:H14").Chọn;

Dưới đây tôi sẽ đưa ra một chút Câu hỏi thường gặp về vấn đề tương tác với Excel từ Delphi

Làm cách nào để xác định giá trị không đổi trong Excel để sử dụng trong Delphi?

Trong trình soạn thảo VBA Chúng tôi đặt điểm dừng đối diện với hằng số quan tâm. Nhấp vào thực thi và khi quá trình thực thi dừng lại, hãy trỏ đến hằng số quan tâm:

Làm cách nào để tắt tính năng xuất tin nhắn trong Excel?

FXlsApp.DisplayAlerts:= Sai;

Làm thế nào để có được danh sách sách từ Excel?

Đối với i:= 1 đến FXlsApp.Workbooks.Count do ListBox1.Items.Add(FXlsApp.Workbooks.Item[i].Name);

Làm cách nào để tắt hiển thị lưới?

FXlsApp.ActiveWindow.DisplayGridlines:= Sai;

Làm cách nào để hiển thị trang tính hiện tại dưới dạng bản xem trước khi in?

FXlsApp.ActiveWindow.SelectedSheets.PrintPreview;

Làm cách nào để in đậm một số văn bản trong ô?

Hàng Var: số nguyên; // Chỉ số chuỗi Col: số nguyên; // Chỉ mục ô TextSelStart: số nguyên; // Bắt đầu từ ký tự TextSelLength: số nguyên; // Số lượng ký tự được chọn bắt đầu FXlsApp.Cells.Characters(TextSelStart, TextSelLength).Font.Bold:= True; kết thúc;

Làm cách nào để tự động điều chỉnh chiều cao hàng cho ô được dán?

Var merge_area: biến thể; cell_width, cell_width, i: số nguyên bắt đầu // Lưu phạm vi của các ô đã hợp nhất vào một biến merge_area:= FXlsApp.Range["D5"].MergeArea; // Lưu chiều rộng của ô mà chúng ta sẽ chọn chiều cao cell_width:= FXlsApp.Range["D5"].ColumnWidth; cell_width:= 0; for i:= 1 to merge_area.Columns.Count do // Lấy tổng chiều rộng của tất cả các cột trong phạm vi đã hợp nhất cell_width:= cell_width + merge_area.Columns[i].ColumnWidth; // Hủy hợp nhất các ô merge_area.UnMerge; // Đặt chiều rộng của ô quan tâm bằng tổng chiều rộng FXlsApp.Range["D5"].ColumnWidth:= cell_width; // Gọi phương pháp chuẩn chiều cao hàng tự động điều chỉnh FXlsApp.Rows.EntireRow.AutoFit; // Trả về chiều rộng ban đầu của ô quan tâm FXlsApp.Range["D5"].ColumnWidth:= cell_width; // Dán các phạm vi lại với nhau merge_area.Merge; kết thúc;

Làm cách nào để có được phạm vi ô đã sử dụng?

Kết quả:= exApp.ActiveSheet.UsedRange;

Làm cách nào để lấy chữ cái cột theo chỉ mục?

Sử dụng Toán học; *** hàm ColIdxToStr(const Col: số nguyên): chuỗi const CharsCount: số nguyên = 26; Độ lệch: số nguyên = 64; Thứ hạng var: byte; Col, Tmp: số nguyên; bắt đầu Kết quả:= ""; trong khi Col > 0 thì bắt đầu Xếp hạng:= 0; Tmp:=Col; trong khi Tmp > CharsCount bắt đầu Tmp:= Ceil(Tmp / CharsCount - 1); Inc(Xếp hạng); kết thúc; Kết quả:= Kết quả + Chr(Tmp + Offset); Col:= Col - Trunc(Power(CharsCount,Rank)) * Tmp; kết thúc; kết thúc;

Xin chào, trong bài viết này tôi sẽ cho bạn biết cách sử dụng trong ứng dụng (chương trình) của bạn Delphi DB ở dạng MS Excel. Vâng vâng chính xác MS Excel. Không có gì phức tạp ở đây. Đầu tiên, hãy điền vào bảng tính của chúng tôi trong MS Excel. Dòng đầu tiên trong mỗi cột sẽ luôn lấy ứng dụng của chúng ta làm tên các cột, tức là nó không lấy tên các cột như thế này - MỘT, B, C và như thế. Vậy ở dòng đầu cột A và cột B tôi viết Họ và tênCấp tương ứng cho từng cột. Đây sẽ là các tiêu đề của chúng ta, sau đó bên dưới tôi điền dữ liệu sẽ có trong cơ sở dữ liệu của mình, bạn hãy tự viết tên và xếp hạng. Vậy là cơ sở dữ liệu của chúng ta đã sẵn sàng. Bây giờ hãy tạo một kết nối với nó. một kết nối được tạo ra tương tự như Truy cập MS, vì vậy không có gì phức tạp ở đây. Trên form chúng ta có các thành phần cũ:

  • Lưới TDB
  • TADOQuery
  • kết nối TADO
  • Nguồn TData

Tôi sẽ nhanh chóng cho bạn biết cách kết nối các thành phần này, vì điều này đã được tôi nói rồi.

  • TADOQuery c kết nối TADO trong tài sản - Sự liên quan
  • Nguồn TData Với TADOQuery trong tài sản Tập dữ liệu
  • Lưới TDB c Nguồn TData trong tài sản Nguồn dữ liệu

TRONG kết nối TADO thiết lập thuộc tính dàiPromt V. SAI. Dường như thiết lập nhỏ xong. Bây giờ chúng ta đến với kết nối trực tiếp. Trong tài sản kết nối TADO- Chuỗi kết nối nhấn nút " “, sau đó chúng ta có một cửa sổ xem

Nhấn nút " Xây dựng..." và cửa sổ sau xuất hiện

Trong cửa sổ này, chọn nhà cung cấp sau: Nhà cung cấp Microsoft OLE DB cho trình điều khiển ODBC và nhấn nút " Tiếp theo>>" và xem cửa sổ sau

Trong cửa sổ này, đặt ngay con trỏ tới “ Sử dụng chuỗi kết nối" và nhấp vào nút " Cuộc họp“, sau đó một cửa sổ xuất hiện

Trong cửa sổ này, chuyển đến tab Nguồn dữ liệu máy tính, trong danh sách xuất hiện, chọn - Tệp Excel, hay đúng hơn là nhấp chuột trái vào ngày này nhấn đúp chuột và trong cửa sổ xuất hiện, chỉ ra đường dẫn đến Excel-cuốn sách chúng tôi đã tạo ra. Sau đó, nhấp vào nút “ Được rồi". Chúng tôi đã sẵn sàng tất cả các kết nối. Tôi muốn bổ sung thêm nếu bạn có một tập tin Excel, trong đó bảng của bạn nằm trong cùng thư mục với chương trình, sau đó trong thuộc tính thành phần kết nối TADO- Chuỗi kết nốiđường dẫn tới file Excel của bạn sẽ được ghi lại, xóa đường dẫn và chỉ để lại tên bạn Excel tập tin có phần mở rộng và trong thuộc tính Cơ sở dữ liệu mặc định cùng một thành phần, hãy viết tên của bạn Excel-file có phần mở rộng . Sau đó, khi bạn khởi chạy ứng dụng của mình, sẽ không có lỗi nào xảy ra với đường dẫn được chỉ định không chính xác đến cơ sở dữ liệu của bạn. Tiếp theo trong Lưới TDB Chúng ta click đúp vào nó và tạo 2 hàng trong cửa sổ hiện ra, đây sẽ là các cột của chúng ta. Và chúng được tạo bằng cách nhấp vào nút “ Thêm mới (Ins)". Tiếp theo, chọn từng dòng trong thuộc tính FieldName, dòng đầu tiên chúng ta sẽ viết - Họ và tên, vì trong Excel-file, đây chính xác là cách tôi viết tên cột ở dòng đầu tiên (đối với ô A1 Tôi đã viết nó như thế này) và bằng cách đánh dấu dòng thứ hai được tạo trong Lưới TDB, trong tài sản Tên trường cùng viết nào - Cấp, vì chính tôi là người đã viết tên cột này (trong ô A2 Tôi đã viết nó như vậy). Bây giờ chúng ta có thể kích hoạt dữ liệu của mình. Đối với sự kiện này hình thức chínhĐang tạo hãy viết như sau

Như bạn có thể thấy, cùng một truy vấn, chỉ thay vì tên của bảng, như chúng ta đã có trong Truy cập MS chúng tôi cho biết tên của trang tính của chúng tôi trong Excel, đặt nó trong dấu ngoặc vuông và kết thúc bằng $ . Như bạn có thể thấy, không có gì phức tạp. Trong bài viết tiếp theo về cơ sở dữ liệu MS Excel Tôi sẽ cho bạn biết cách chèn dữ liệu, chỉnh sửa, v.v.

Tôi xin lưu ý rằng nếu bạn là một người hâm mộ bóng đá thực sự và đặc biệt là giải vô địch Anh đang diễn ra trên khoảnh khắc này là một trong những người mạnh nhất, thì có lẽ bạn sẽ rất thích đọc về câu lạc bộ bóng đá

TRONG đánh giá này Các cấu trúc cơ bản cho phép bạn truy cập sổ làm việc Excel từ Delphi sẽ được thảo luận.

Tổ chức truy cập vào sách EXCEL

Để tương tác với MS Excel trong một chương trình, bạn phải sử dụng mô-đun ComObj và khai báo một biến để truy cập loại biến thể MS Excel.

sử dụng ComObj;
var Excel: Biến thể;

Trong trường hợp đơn giản nhất, bạn có thể khởi tạo một biến Excel như thế này:

Excel:= CreateOleObject("Excel.Application");

Tạo một cuốn sách mới:

Excel.Workbooks.Add;

Mở một cuốn sách hiện có (trong đó đường dẫn là đường dẫn đến tệp có phần mở rộng xls.):

Excel.Workbooks.Open;

Để mở một sổ làm việc hiện có ở chế độ chỉ đọc:

Excel.Workbooks.Open;

Đóng Excel:

Excel.ActiveWorkbook.Close;
Excel.Application.Quit;

Chặn các yêu cầu Excel (xác nhận, thông báo), ví dụ chặn yêu cầu lưu file:

Excel.DisplayAlerts:=False;

Hiện hoặc ẩn Excel trên màn hình:

Excel.Visible:= True;
Excel.Visible:= Sai;

In nội dung của bảng tính Excel đang hoạt động:

Excel.ActiveSheet.PrintOut;

Đọc/ghi dữ liệu trong EXCEL

Bạn có thể truy cập một ô trong sổ làm việc Excel hiện tại như sau:

Excel.Range["b2"]:="Xin chào!"; // ghi giá trị vào ô
s:=Excel.Range["b2"]; // đọc giá trị từ ô

Trong đó b2 là địa chỉ ô.

Hoặc sử dụng kiểu liên kết R1C1:

Excel.Range]:="Xin chào!";

Tọa độ ô ở đâu.

Ở tất cả, ô Excel Bạn có thể gán bất kỳ giá trị nào (ký tự, số nguyên, phân số, ngày tháng) và Excel sẽ đặt định dạng mặc định trong ô.

Định dạng ô trong EXCEL

Bạn có thể chọn (chọn) một nhóm ô cho công việc tiếp theo như thế này:

Excel.Range, Excel.Cells].Chọn;
// hoặc
Excel.Range["A1:C5"].Select;

Trong trường hợp này, vùng nằm giữa ô A1 và C5 sẽ được chọn.

Sau khi thực hiện lựa chọn, bạn có thể thiết lập:
1) Hợp nhất các ô:

Excel.Selection.MergeCells:=True;

2) Gói từ:

Excel.Selection.WrapText:=True;

3) Căn chỉnh theo chiều ngang:

Excel.Selection.HorizontalAlignment:=3;

Khi được đặt thành 1, căn chỉnh mặc định sẽ được sử dụng, khi được đặt thành 2, căn chỉnh là trái, 3 là căn giữa và 4 là phải. 4) Căn chỉnh theo chiều dọc

Excel.Selection.VerticalAlignment:=1;

Các giá trị được gán giống như căn chỉnh theo chiều ngang.
5) Đường viền ô:

Khi được đặt thành 1, đường viền ô được vẽ bằng các đường liền mảnh.
Ngoài ra, bạn có thể chỉ định các giá trị cho thuộc tính Borders, ví dụ bằng 3. Khi đó, chỉ có đường viền trên cho khối lựa chọn sẽ được đặt:

Excel.Selection.Borders.LineStyle:=1;

Giá trị của thuộc tính Borders chỉ định sự kết hợp khác nhau mép tế bào.
Trong cả hai trường hợp, bạn có thể sử dụng các giá trị trong phạm vi từ 1 đến 10.

Sử dụng mật khẩu trong EXCEL

Việc đặt mật khẩu cho sổ làm việc đang hoạt động có thể được thực hiện như sau:

thử
// cố gắng đặt mật khẩu
Excel.ActiveWorkbook.protect("vượt qua");
ngoại trừ
// hành động khi nỗ lực không thành côngĐặt mật khẩu
kết thúc;

Trong đó pass là mật khẩu để đặt cho sách.

Việc xóa mật khẩu của sách cũng tương tự, dùng lệnh

Excel.ActiveWorkbook.Unprotect ("vượt qua");

Đặt hoặc xóa mật khẩu cho trang hiện hoạt Sổ làm việc Excelđược sản xuất bởi các đội

Excel.ActiveSheet.protect("vượt qua"); // đặt mật khẩu
Excel.ActiveSheet.Unprotect("vượt qua"); // xóa mật khẩu

Trong đó pass là mật khẩu được đặt để bảo vệ sách.

Các thao tác phụ trợ trong EXCEL

Xóa các hàng có dịch chuyển lên trên (khi thực hiện các thao tác này, các hàng từ 5 đến 15 sẽ bị xóa):

Excel.Rows["5:15"].Select;
Excel.Selection.Delete;

Đặt khu vực được ghim vào hoạt động bảng tính Excel:

// giải phóng khu vực nếu nó được đặt
Excel.ActiveWindow.FreezePanes:=False;
// chọn ô mong muốn trong trong trường hợp này D3
Excel.Range["D3"].Select;
// thiết lập vùng bị đóng băng
Excel.ActiveWindow.FreezePanes:=True;


Bài đánh giá này thảo luận về các thiết kế cơ bản cho phép bạn truy cập sổ làm việc Excel từ DELPHI.

Tổ chức truy cập vào sách EXCEL

Để tương tác với MS excel trong chương trình bạn phải sử dụng module ComObj
sử dụng ComObj;
và khai báo một biến để truy cập MS excel kiểu sau:
var Excel: Biến thể;

Trong trường hợp đơn giản nhất, việc khởi tạo một biến Excel có thể được thực hiện như sau:
Excel:= CreateOleObject("Excel.Application");

Tạo một cuốn sách mới:
Excel.Workbooks.Add;

Mở một cuốn sách hiện có (trong đó đường dẫn là đường dẫn đến tệp có phần mở rộng xls.):
Excel.Workbooks.Open;

Để mở một sổ làm việc hiện có ở chế độ chỉ đọc:
Excel.Workbooks.Open;

Đóng Excel:
Excel.ActiveWorkbook.Close;
Excel.Application.Quit;

Chặn các yêu cầu Excel (xác nhận, thông báo), ví dụ chặn yêu cầu lưu file:
Excel.DisplayAlerts:=False;

Hiển thị Excel trên màn hình:
Excel.Visible:= True;
hoặc ẩn:
Excel.Visible:= Sai;

In nội dung của bảng excel đang hoạt động:
Excel.ActiveSheet.PrintOut;

Đọc/ghi dữ liệu trong EXCEL

Bạn có thể truy cập một ô trong sổ làm việc Excel hiện tại như sau:
Excel.Range["B2"]:="Xin chào!";- để ghi một giá trị vào một ô hoặc
s:=Excel.Range["B2"]; - để đọc,
trong đó B2 là địa chỉ ô.

Hoặc sử dụng kiểu liên kết R1C1:
Excel.Range]:="Xin chào!";, tọa độ ô ở đâu.

Nói chung, bạn có thể gán bất kỳ giá trị nào cho một ô Excel (ký tự, số nguyên, phân số, ngày tháng) và Excel sẽ đặt định dạng mặc định trong ô đó.

Định dạng ô trong EXCEL

Bạn có thể chọn (chọn) một nhóm ô cho công việc tiếp theo như thế này:
Excel.Range, Excel.Cells].Chọn;
hoặc
Excel.Range["A1:C5"].Select;
trong trường hợp này, vùng nằm giữa ô A1 và C5 sẽ được chọn.

Sau khi thực hiện lựa chọn, bạn có thể thiết lập:
1) hợp nhất các ô
Excel.Selection.MergeCells:=True;
2) gói từ
Excel.Selection.WrapText:=True;
3) căn chỉnh theo chiều ngang
Excel.Selection.HorizontalAlignment:=3;
Khi được đặt thành 1, căn chỉnh mặc định sẽ được sử dụng, khi được đặt thành 2, căn chỉnh là trái, 3 là căn giữa và 4 là phải.
4) căn chỉnh theo chiều dọc
Excel.Selection.VerticalAlignment:=1;
các giá trị được gán giống như căn chỉnh theo chiều ngang.
5) đường viền cho các ô

Khi được đặt thành 1, đường viền ô được vẽ bằng các đường liền mảnh.
Ngoài ra, bạn có thể chỉ định các giá trị cho thuộc tính Borders, ví dụ bằng 3. Khi đó, chỉ có đường viền trên cho khối lựa chọn sẽ được đặt:
Excel.Selection.Borders.LineStyle:=1;
Giá trị của thuộc tính Borders chỉ định sự kết hợp khác nhau của các cạnh ô.
Trong cả hai trường hợp, bạn có thể sử dụng các giá trị trong phạm vi từ 1 đến 10.

Sử dụng mật khẩu trong EXCEL

Việc đặt mật khẩu cho sổ làm việc đang hoạt động có thể được thực hiện như sau:
thử
// cố gắng đặt mật khẩu
Excel.ActiveWorkbook.protect("vượt qua");
ngoại trừ
// hành động nếu nỗ lực đặt mật khẩu không thành công
kết thúc;

trong đó pass là mật khẩu để đặt cho sách.

Việc xóa mật khẩu của sách cũng tương tự, dùng lệnh
Excel.ActiveWorkbook.Unprotect ("vượt qua");

Việc đặt và xóa mật khẩu cho trang hoạt động của sổ làm việc Excel được thực hiện bằng lệnh
Excel.ActiveSheet.protect("vượt qua"); // đặt mật khẩu
Excel.ActiveSheet.Unprotect("vượt qua"); // xóa mật khẩu

trong đó pass là mật khẩu được đặt để bảo vệ sách.

Các thao tác phụ trợ trong EXCEL

Xóa các hàng bằng cách dịch chuyển lên:
Excel.Rows["5:15"].Select;
Excel.Selection.Delete;

Khi thực hiện các thao tác này, các dòng từ 5 đến 15 sẽ bị xóa.

Đặt vùng đóng băng trên bảng tính Excel đang hoạt động
// giải phóng khu vực nếu nó được đặt
Excel.ActiveWindow.FreezePanes:=False;
// chọn ô mong muốn, trong trường hợp này là D3
Excel.Range["D3"].Select;
// thiết lập vùng bị đóng băng
Excel.ActiveWindow.FreezePanes:=True;

Chúc may mắn!

Trong bài viết này, chúng ta sẽ xem xét các cấu trúc cơ bản cho phép bạn truy cập sổ làm việc MS Excel từ Delphi.

Tổ chức truy cập vào sách EXCEL

Để tương tác với MS Excel trong chương trình, bạn phải sử dụng mô-đun ComObj

Sử dụng ComObj;

và khai báo một biến để truy cập MS Excel kiểu sau:

Var MsExcel: Biến thể;

Trong trường hợp đơn giản nhất, việc khởi tạo một biến Excel có thể được thực hiện như sau:

MsExcel:= CreateOleObject("Excel.Application");

Tạo một cuốn sách mới:

MsExcel.Workbooks.Add;

Mở một cuốn sách hiện có (trong đó đường dẫn là đường dẫn đến tệp có phần mở rộng xls.):

MsExcel.Workbooks.Open;

Để mở một sổ làm việc hiện có ở chế độ chỉ đọc:

MsExcel.Workbooks.Open;

Đóng Excel:

MsExcel.ActiveWorkbook.Close; MsExcel.Application.Quit;

Chặn các yêu cầu (xác nhận, thông báo) từ Ms Excel chẳng hạn chặn yêu cầu lưu file:

MsExcel.DisplayAlerts:=False;

Hiển thị Excel trên màn hình:

MsExcel.Visible:= Đúng;

hoặc ẩn:

MsExcel.Visible:= Sai;

In nội dung của bảng MS Excel đang hoạt động:

MsExcel.ActiveSheet.PrintOut;

Đọc/ghi dữ liệu trong EXCEL

Bạn có thể truy cập một ô trong sổ làm việc Excel hiện tại như sau:

Để ghi một giá trị vào một ô:

MsExcel.Range["B2"]:="Xin chào!";

Để đọc một giá trị từ một ô:

S:=MsExcel.Range["B2"];

Ở đâu B2- địa chỉ ô.

Hoặc sử dụng kiểu liên kết R1C1:

MsExcel.Range]:="Xin chào!";

Ở đâu - tọa độ tế bào.

Nói chung, bạn có thể gán bất kỳ giá trị nào cho một ô Excel (ký tự, số nguyên, phân số, ngày tháng) và Ms Excel sẽ đặt định dạng mặc định trong ô.

Định dạng ô trong EXCEL

Bạn có thể chọn (chọn) một nhóm ô cho công việc tiếp theo như thế này:

MsExcel.Range, MsExcel.Cells].Chọn; // hoặc MsExcel.Range["A1:C5"].Select;

trong trường hợp này, vùng nằm giữa ô A1 và C5 sẽ được chọn.

Sau khi thực hiện lựa chọn, bạn có thể thiết lập việc hợp nhất ô, ngắt dòng, ngang và căn chỉnh theo chiều dọc:

// hợp nhất các ô MsExcel.Selection.MergeCells:=True; // gói theo MsExcel.Selection.WrapText:=True; // căn chỉnh ngang MsExcel.Selection.HorizontalAlignment:=3; // căn chỉnh theo chiều dọc MsExcel.Selection.VerticalAlignment:=1;

Đối với chiều dọc và căn chỉnh ngang các giá trị sau được sử dụng:

1 - căn chỉnh mặc định được sử dụng
2 - căn lề trái
3 - ở trung tâm
4 - ở bên phải.

Đường viền ô

Khi được đặt thành 1, đường viền ô được vẽ bằng các đường liền mảnh.

Ngoài ra, bạn có thể chỉ định các giá trị cho thuộc tính Borders, ví dụ bằng 3. Khi đó, chỉ có đường viền trên cho khối lựa chọn sẽ được đặt:

MsExcel.Selection.Borders.LineStyle:=1;

Giá trị của thuộc tính Borders chỉ định sự kết hợp khác nhau của các cạnh ô. Trong cả hai trường hợp, bạn có thể sử dụng các giá trị trong phạm vi từ 1 đến 10.

Sử dụng mật khẩu trong EXCEL

Việc đặt mật khẩu cho sổ làm việc đang hoạt động có thể được thực hiện như sau:

Hãy thử // thử đặt mật khẩu MsExcel.ActiveWorkbook.protect("pass"); ngoại trừ // các hành động nếu nỗ lực đặt mật khẩu không thành công;

Ở đâu vượt qua- đặt mật khẩu cho cuốn sách.

Việc xóa mật khẩu của sách cũng tương tự, dùng lệnh

MsExcel.ActiveWorkbook.Unprotect("vượt qua");

Ở đâu vượt qua

Việc đặt và xóa mật khẩu cho trang hoạt động của sổ làm việc Excel được thực hiện bằng lệnh

MsExcel.ActiveSheet.protect("vượt qua"); // đặt mật khẩu MsExcel.ActiveSheet.Unprotect("pass"); // xóa mật khẩu

Ở đâu vượt qua- đặt mật khẩu để bảo vệ sách.

Các thao tác phụ trợ trong EXCEL

Xóa các hàng bằng cách dịch chuyển lên:

MsExcel.Rows["5:15"].Select; MsExcel.Selection.;

Khi thực hiện các thao tác này, các dòng từ 5 đến 15 sẽ bị xóa.

Đặt vùng đóng băng trên bảng tính Excel đang hoạt động

// giải phóng khu vực nếu nó được đặt MsExcel.ActiveWindow.FreezePanes:=False; // chọn ô mong muốn, trong trường hợp này là D3 MsExcel.Range["D3"].Select; // thiết lập vùng đóng băng MsExcel.ActiveWindow.FreezePanes:=True;

Lưu sổ làm việc Excel đang hoạt động