Excel交互式動態切換導航條(Delphi版本

職場菊菊子 2024-04-15 09:02:43
前言

之前跟大家分享過用C#制作的Excel動態導航條小工具。

今天再給大家分享一下用Delphi實現的導航條小工具,可以同時兼容微軟Excel和WPS版本的Excel。

界面設計

界面跟C#版本的導航條小工具類似。

功能簡述

左邊列表框:展示當前打開的Excel工作簿,點擊後激活對應的工作簿

右邊列表框:展示選定工作簿裏面的worksheet,點擊後即會對應的工作表

底部按鈕: 獲取當前打開的Excel工作簿,並添加到左邊的列表框

Delphi實現

使用OleObject操作Excel,只需要電腦上安裝有Excel或者WPS即可。

unit wps_app;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ComObj;type TfrmNav =(TForm) Test: TButton; lbExcels: TListBox; lbSheets: TListBox; Label1: TLabel; Label2: TLabel; procedure TestClick(Sender: TObject); function GetOpenedExcel: Variant; procedure lbExcelsClick(Sender: TObject); procedure lbSheetsClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmNav: TfrmNav;implementation{$R *.dfm}procedure TfrmNav.lbExcelsClick(Sender: TObject);var wps, wb: Variant; I, j: Integer;begin if lbExcels.ItemIndex = -1 then exit; wps := GetOpenedExcel; if varisempty(wps) then begin lbExcels.Clear; exit; end; if wps.workbooks.count = 0 then begin lbExcels.Clear; exit; end; // lbSheets.Clear; for I := 1 to wps.workbooks.count do begin wb := wps.workbooks[I]; if wb.Name = lbExcels.Items[lbExcels.ItemIndex] then begin wb.activate; for j := 1 to wb.worksheets.count do begin lbSheets.Items.Add(wb.worksheets[j].Name); end; break; end; end;end;procedure TfrmNav.lbSheetsClick(Sender: TObject);var wps, wb: Variant; I, J: Integer;begin if (lbExcels.ItemIndex = -1) or (lbSheets.ItemIndex = -1) then exit; wps := GetOpenedExcel; if varisempty(wps) then begin lbSheets.Clear; exit; end; if wps.workbooks.count = 0 then begin lbSheets.Clear; exit; end; for I := 1 to wps.workbooks.count do begin wb := wps.workbooks[I]; if wb.Name = lbExcels.Items[lbExcels.ItemIndex] then begin wb.activate; for j := 1 to wb.worksheets.count do begin if wb.worksheets[j].name = lbSheets.Items[lbSheets.ItemIndex] then begin wb.worksheets[j].activate; break; end; end; break; end; end;end;function TfrmNav.GetOpenedExcel: Variant;beginend;procedure TfrmNav.TestClick(Sender: TObject);var wps, wb, sht: Variant; I: Integer;begin // Clear lbExcels.Clear; // wps := GetOpenedExcel; if VarIsEmpty(wps) or VarIsNull(wps) then Exit; if wps.Workbooks.Count = 0 then Exit; for I := 1 to wps.Workbooks.Count do begin wb := wps.Workbooks[I]; lbExcels.Items.Add(wb.Name); end;end;end.
0 阅读:0

職場菊菊子

簡介:感謝大家的關注