在Delphi中使用Interface而不使用Variant控制Microsoft Excel

C++Builder核心编程:VCL机制、内存管理与现代化改造实战 在Windows桌面应用开发领域,C++Builder作为经典的RAD开发平台,其核心架构基于VCL(Visual Component Library)对象模型与所有权机制。通过运行时类型信息(RTTI)和流化系统,VCL实现了高效的可视化设计与动态界面加载。在工程实践中,正确处理VCL对象生命周期与智能指针的融合、UnicodeString字符串编码转换以及多线程安全更新UI,是保障应用稳定性的关键。这些技术对于维护和升级遗留系统、在关键业务场景中实现渐进式现代化改造具有重要价值,特别是在处理大型C++B 阅读详情

此文背景:
  最近,我想通过Interface完全控制数据排版格式导出到Excel。不愿意使用Variant是因为Variant操作慢
,编码时需清晰Excel对象层次结构,调试不方便。

摸索过程:
  基本的操作简单,我搞不定的就是PageSetup与选定一列或一行。别看下面代码简单,我可是花了一天半时
间看,搜,问(太菜,惭愧中...)。

此文目的:
  数据共享并期望数据共享。

procedure AutoExcelByIntf;
var
  R: Range;
  LCID: Integer;

 // 这才是正确的类型,否则怎么也找不到PageSetup
 B: _Workbook;
  S: _Worksheet;
begin
  ...

  
  LCID := GetUserDefaultLCID;
  B := XlApp.Workbooks.Add(EmptyParam, LCID);

  // 两种方法一个样
  // S := B.Sheets[1] as _WorkSheet;
  S := B.Sheets.Item[1] as _WorkSheet;


  // 页面设置
  S.PageSetup.LeftMargin := 150; // 其他不再一一列举
  ...

 

 // 第一列与第一行文本格式设置
  // 设为Text不至于3.1515926535897932384626被截成3.14159265358979
  // 注:Excel最多65536行,IV列

  // XlApp.Range['A1', 'A65536'].NumberFormat := '@'; // 不能容忍此笨办法
 // XlApp.Range['A1', 'IV1'].NumberFormat :=
'@';    // 虽然可以达到目的
 
  R := XlApp.Range['A1', 'A1'];
  R.EntireColumn.NumberFormat :=
'@';
  R.EntireRow.NumberFormat :=
'@';

  ...

  // 选定一百行与一百列
  // R := XlApp.Range['A1', 'CV100']; // 不能容忍此笨办法
  // R.Select;                        // 虽然可以达到目的
  R := XlApp.Cells;
  R := R.Range_[R.Item[1, 1], R.Item[100, 100]];
  R.Select;
end;

谢谢大家砸砖头!:-)


  

FastReport VCL v2025.2 适配 Delphi 13 Florence 实战指南 VCL 报表引擎是 Windows 原生 Delphi 应用的核心数据呈现组件,其稳定性直接关联财务、医疗等关键业务系统的单据输出可靠性。随着 Delphi 13 Florence 发布,编译器 ABI、RTTI 机制与内存模型发生重大演进,传统报表控件面临符号解析失败、COM 引用计数错位、本地化格式异常等底层兼容性风险。FastReport VCL v2025.2 首次官方支持 Delphi 13,通过显式适配 TObjectList 构造参数、TFormatSettings 初始化逻辑及 TPen.S 阅读详情

相关推荐

Delphi集成Aspose.Words实现无Office依赖的Word文档自动化处理

文档自动化处理是企业级应用开发中的常见需求,尤其在报表生成、合同导出等场景。传统方案常依赖Microsoft Office组件,存在部署复杂、性能低下和稳定性差等问题。COM Interop技术作为一种成熟的互操作方案,能够在不同技术栈间架起桥梁,实现功能复用与系统集成。其核心原理是通过类型库(TLB)在Win32与.NET CLR运行时之间建立通信协议,允许非托管代码调用托管代码。这一技术为经典开发工具(如Delphi)接入现代.NET生态库提供了可能,显著扩展了其能力边界。在服务器端无头(Headles

weixin_34284188的博客 342

DELPHI中四种EXCEL访问技术实现

一ADO方式访问Excel文件

fly的专栏 1万+

利用Variant变量用DELPHI操作EXCEL

利用Variant变量用DELPHI操作EXCEL.zip

Delphi控制Excel(一)

用Delphi从数据库中取得资料,然后导出到Excel中做成报表是个不错的选择,因为Excel强大的报表功能那可是没话说   前提   Delphi中要    uses comobj;   var Excel:Variant;   一、Excel操作   1.创建Excel对象   Excel := CreateOleObject( Excel.Application );   2

时光如流水的专栏 1400

不用三方控件读excel源码

本资源无任何三方控件,无须安装excel,所使用控件自己下载去看 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, shlobj,ShellAPI, Menus, StdCtrls, DB, ADODB, FileCtrl, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; FileListBox1: TFileListBox; DirectoryListBox1: TDirectoryListBox; DriveComboBox1: TDriveComboBox; con1: TADOConnection; ADOQuery1: TADOQuery; DasFind: TADODataSet; DataSource5: TDataSource; ComboBox1: TComboBox; PopupMenu1: TPopupMenu; N1: TMenuItem; Button1: TButton; Edit1: TEdit; ComboBox2: TComboBox; DataSource1: TDataSource; PopupMenu2: TPopupMenu; N2: TMenuItem; N3: TMenuItem; Button2: TButton; ADOConnection1: TADOConnection; procedure FileListBox1Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure setdbgridwidth; procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ComboBox1Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; ...

D7_XLSReadWriteII写入Excel带下拉列表框,Delphi不装三方控件调用GIF

演示Delphi7用XLSReadWriteII写入Excel带下拉列表框以及Delphi不装三方控件调用GIF方法。

Delphi 导出数据至Excel的7种方法

一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :strin

crkres9527 1万+

用R语言实现“中断时间序列分析” --- R code for ITS

ITS方法可用于评估一项干预措施的效果,从水平改变和斜率改变两个角度来描述干预引起的变化。

franksui的博客 4026
上一篇: 簡單的Windows API示例
下一篇: 四书之“大学”学习日记1
tobelost
博客等级 码龄24年 10粉丝 39原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值