Delphi TXLSReadWriteII导出Excel

TXLSReadWriteII导出Excle (有点复杂,可以自己简化一下,直接从项目中抓取的)procedure TformSubReport.DataToExcel(_Item: Integer; _Obj: TObject);                         //导出Exclevari, j, k: Integer;aVendorObj: TVendor;aEnterpriseObj: TEnterprise;aXlsObj: TXLSReadWriteII;aFileName: AnsiString;aCarRec: PCarRec;aOnLine: AnsiString;aRecordCount: Integer;                                                       //Excel数据条数aEnterpriseCount: Integer;                                                   //统计企业有多少行 + 合计一行aBookmark: Integer;                                                          //记录运营商的起始位置aMergedCell: TMergedCell;aFontIndex: Integer;aStampTime: AnsiString;aVendorName: AnsiString;beginif _Item = 1 then_Obj := nil;aRecordCount := 0;aEnterpriseCount := 0;SaveDialog1.InitialDir := ExtractFilePath(ParamStr(0));SaveDialog1.DefaultExt := 'xls';SaveDialog1.Filter := 'Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*';aStampTime := FormatDateTime('yyyymmddhhnnss', Now);SaveDialog1.FileName := aStampTime;if not SaveDialog1.Execute thenExit;aFileName := SaveDialog1.FileName;if aFileName = '' thenExit;aXlsObj := TXLSReadWriteII.Create(nil);tryaXlsObj.Sheets[0].NameWideString('统计报表' + aStampTime);                 //工作表命名with aXlsObj.Formats.Add do                                                //定义格式一beginaFontIndex := aXlsObj.Fonts.AddIndex;aXlsObj.Fonts[aFontIndex].Name := '黑体';aXlsObj.Fonts[aFontIndex].Size := 14;aXlsObj.Fonts[aFontIndex].Color := xcRed;                                //字体颜色无效。shitHorizAlignment := chaCenter;VertAlignment := cvaCenter;FillPatternForeColor := xcLilac;end;with aXlsObj.Formats.Add do                                                //定义格式二beginHorizAlignment := chaCenter;VertAlignment := cvaCenter;end;case _item of1:beginaXlsObj.Sheets[0].WriteWideString(0, 0, 1, '运营商名称');aXlsObj.Sheets[0].WriteWideString(1, 0, 1, '企业名称');aXlsObj.Sheets[0].WriteWideString(2, 0, 1, '轨迹数总数');aXlsObj.Sheets[0].WriteWideString(3, 0, 1, '超速报警总数');aXlsObj.Sheets[0].WriteWideString(4, 0, 1, '车辆总数');aXlsObj.Sheets[0].WriteWideString(5, 0, 1, '在线车辆总数');aXlsObj.Sheets[0].WriteWideString(6, 0, 1, '在线率(%)');end;elsebeginaXlsObj.Sheets[0].WriteWideString(0, 0, 1, '序号');aXlsObj.Sheets[0].WriteWideString(1, 0, 1, '运营商名称');aXlsObj.Sheets[0].WriteWideString(2, 0, 1, '企业名称');aXlsObj.Sheets[0].WriteWideString(3, 0, 1, '定位时间');aXlsObj.Sheets[0].WriteWideString(4, 0, 1, '车牌号码');aXlsObj.Sheets[0].WriteWideString(5, 0, 1, '轨迹数');aXlsObj.Sheets[0].WriteWideString(6, 0, 1, '超速报警数');aXlsObj.Sheets[0].WriteWideString(7, 0, 1, '疲劳驾驶报警数');aXlsObj.Sheets[0].WriteWideString(8, 0, 1, '是否在线');end;end;if _Obj = nil thenbeginfor i := 0 to FVendorHash.Count - 1 dobeginaVendorObj := FVendorHash[i];if aVendorObj = nil then Continue;aBookmark := aEnterpriseCount;aEnterpriseCount := 0;for j := 0 to aVendorObj.EnterpriseHash.Count - 1 dobeginaEnterpriseObj := aVendorObj.EnterpriseHash[j];if aEnterpriseObj = nil then Continue;if _Item = 1 thenbegininc(aRecordCount);inc(aEnterpriseCount);aXlsObj.Sheets[0].WriteWideString(0, aRecordCount, 2, aVendorObj.DataRec.VendorName);aXlsObj.Sheets[0].AsWideString[1, aRecordCount] := aEnterpriseObj.DataRec.EnterpriseName;aXlsObj.Sheets[0].AsFloat[2, aRecordCount] := aEnterpriseObj.TotalInfo.TotalGpsCount;aXlsObj.Sheets[0].AsFloat[3, aRecordCount] := aEnterpriseObj.TotalInfo.TotalOverAlarm;aXlsObj.Sheets[0].AsFloat[4, aRecordCount] := aEnterpriseObj.TotalInfo.TotalCarCount;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := aEnterpriseObj.TotalInfo.TotalOnLine;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := aEnterpriseObj.TotalInfo.OnlineRate;endelsebeginfor k := 0 to aEnterpriseObj.CarHash.Count - 1 dobeginaCarRec := aEnterpriseObj.CarHash[k];if _Item = 2 then //在线beginif not aCarRec.IsLine then Continue;aOnLine := '在线';endelse if _Item = 3 then //离线beginif aCarRec.IsLine then Continue;aOnLine := '离线';endelse if _Item = 4 then //所有beginif aCarRec.IsLine thenaOnLine := '在线'elseaOnLine := '离线';end;inc(aRecordCount);inc(aEnterpriseCount);aXlsObj.Sheets[0].AsInteger[0, aRecordCount] := aRecordCount;aXlsObj.Sheets[0].AsWideString[1, aRecordCount] := aVendorObj.DataRec.VendorName;aXlsObj.Sheets[0].AsWideString[2, aRecordCount] := aEnterpriseObj.DataRec.EnterpriseName;aXlsObj.Sheets[0].AsWideString[3, aRecordCount] := DateTimeToStr(aCarRec.ReportDate);aXlsObj.Sheets[0].AsWideString[4, aRecordCount] := aCarRec.RegistrationNO;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := aCarRec.GpsCount;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := aCarRec.OverSpeedAlarmCount;aXlsObj.Sheets[0].AsFloat[7, aRecordCount] := aCarRec.DriverFatigueAlarmCount;aXlsObj.Sheets[0].AsWideString[8, aRecordCount] := aOnLine;end;end;end;if _Item = 1 then                                   //小计beginInc(aRecordCount);Inc(aEnterpriseCount);aXlsObj.Sheets[0].WriteWideString(0, aRecordCount, 2, aVendorObj.DataRec.VendorName);aXlsObj.Sheets[0].WriteWideString(1, aRecordCount, 2, '小计');aXlsObj.Sheets[0].AsFloat[2, aRecordCount] := aVendorObj.TotalInfo.TotalGpsCount;aXlsObj.Sheets[0].AsFloat[3, aRecordCount] := aVendorObj.TotalInfo.TotalOverAlarm;aXlsObj.Sheets[0].AsFloat[4, aRecordCount] := aVendorObj.TotalInfo.TotalCarCount;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := aVendorObj.TotalInfo.TotalOnLine;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := aVendorObj.TotalInfo.OnlineRate;aMergedCell := aXlsObj.Sheets[0].MergedCells.Add;aMergedCell.Col1 := 0;aMergedCell.Row1 := aBookmark + 1;aMergedCell.Col2 := 0;aMergedCell.Row2 := aBookmark + aEnterpriseCount;                    //这里的值是对应Excel中最后一行的地址end;end;endelse if _Obj is TVendor thenbeginfor j := 0 to TVendor(_Obj).EnterpriseHash.Count - 1 dobeginaEnterpriseObj := TVendor(_Obj).EnterpriseHash[j];if aEnterpriseObj = nil then Continue;for k := 0 to aEnterpriseObj.CarHash.Count - 1 dobeginaCarRec := aEnterpriseObj.CarHash[k];if _Item = 2 then //在线beginif not aCarRec.IsLine then Continue;aOnLine := '在线';endelse if _Item = 3 then //离线beginif aCarRec.IsLine then Continue;aOnLine := '离线';endelse if _Item = 4 then //所有beginif aCarRec.IsLine thenaOnLine := '在线'elseaOnLine := '离线';end;inc(aRecordCount);aXlsObj.Sheets[0].AsInteger[0, aRecordCount] := aRecordCount;aXlsObj.Sheets[0].AsWideString[1, aRecordCount] := TVendor(_Obj).DataRec.VendorName;aXlsObj.Sheets[0].AsWideString[2, aRecordCount] := aEnterpriseObj.DataRec.EnterpriseName;aXlsObj.Sheets[0].AsWideString[3, aRecordCount] := DateTimeToStr(aCarRec.ReportDate);aXlsObj.Sheets[0].AsWideString[4, aRecordCount] := aCarRec.RegistrationNO;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := aCarRec.GpsCount;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := aCarRec.OverSpeedAlarmCount;aXlsObj.Sheets[0].AsFloat[7, aRecordCount] := aCarRec.DriverFatigueAlarmCount;aXlsObj.Sheets[0].AsWideString[8, aRecordCount] := aOnLine;end;end;endelse if _Obj is TEnterprise thenbeginaVendorObj := FVendorHash.ValueOf(IntToStr(TEnterprise(_Obj).DataRec.VendorID));if aVendorObj = nil thenExit;aVendorName := aVendorObj.DataRec.VendorName;for k := 0 to TEnterprise(_Obj).CarHash.Count - 1 dobeginaCarRec := TEnterprise(_Obj).CarHash[k];if _Item = 2 then                         //在线beginif not aCarRec.IsLine then Continue;aOnLine := '在线';endelse if _Item = 3 then                    //离线beginif aCarRec.IsLine then Continue;aOnLine := '离线';endelse if _Item = 4 then                    //所有beginif aCarRec.IsLine thenaOnLine := '在线'elseaOnLine := '离线';end;inc(aRecordCount);aXlsObj.Sheets[0].AsInteger[0, aRecordCount] := aRecordCount;aXlsObj.Sheets[0].AsWideString[1, aRecordCount] := aVendorName;aXlsObj.Sheets[0].AsWideString[2, aRecordCount] := TEnterprise(_Obj).DataRec.EnterpriseName;aXlsObj.Sheets[0].AsWideString[3, aRecordCount] := DateTimeToStr(aCarRec.ReportDate);aXlsObj.Sheets[0].AsWideString[4, aRecordCount] := aCarRec.RegistrationNO;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := aCarRec.GpsCount;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := aCarRec.OverSpeedAlarmCount;aXlsObj.Sheets[0].AsFloat[7, aRecordCount] := aCarRec.DriverFatigueAlarmCount;aXlsObj.Sheets[0].AsWideString[8, aRecordCount] := aOnLine;end;end;if (_Item = 1) and (_Obj = nil) then                                       //汇总beginInc(aRecordCount);aXlsObj.Sheets[0].WriteWideString(0, aRecordCount, 2, '汇总');aXlsObj.Sheets[0].AsInteger[1, aRecordCount] := FTotalEnterpriseCount;aXlsObj.Sheets[0].AsFloat[2, aRecordCount] := FTotalInfo.TotalGpsCount;aXlsObj.Sheets[0].AsFloat[3, aRecordCount] := FTotalInfo.TotalOverAlarm;aXlsObj.Sheets[0].AsFloat[4, aRecordCount] := FTotalInfo.TotalCarCount;aXlsObj.Sheets[0].AsFloat[5, aRecordCount] := FTotalInfo.TotalOnLine;aXlsObj.Sheets[0].AsFloat[6, aRecordCount] := FTotalInfo.OnlineRate;end;aXlsObj.Filename := aFileName;aXlsObj.Write;Information(Format('导出文件'+#13#10+'%s'+#13#10 +'成功!', [aFileName]));finallyaXlsObj.Free;end;end;

  

转载于:https://www.cnblogs.com/yzryc/p/7676317.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python网络编程项目_Python网络编程攻略

第1章套接字、IPv4和简单的客户端/服务器编程 本章攻略: 打印设备名和IPv4地址 获取远程设备的IP地址 将IPv4地址转换成不同的格式 通过指定的端口和协议找到服务名 主机字节序和网络字节序之间相互转换 设定并获取默认的套接字超时时间 优雅地处理套接字错误 修改套…

玩下软工项目,第一轮--全局Context的获取,SQLite的建立与增删改查,读取用户通话记录信息...

项目的Github地址:https://github.com/ggrcwxh/LastTime 采用基于git的多人协作开发模式 软件采用mvc设计模式,前端这么艺术的事我不太懂,交给斌豪同学去头疼了。第一轮先实现查询通话记录返回对应号码上一次的通话时间。 真机测试下的效果图…

red hat linux 安装oracle10g vm,oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装

oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装ORACLE 10G在LINUX的安装:先上来两张图:DBA是努力的方向,ORACLE DBA包罗万象,连LINUX/UNIX都搞不定,还弄P个ORACLE啊.两部分:1.RED HAT ENTERPRISE LINUX 5的安装难点(对于现在的我来说):1.1YUM本地源的配置;网络有相关资料,不…

jvm垃圾回收机制_深入理解JVM的垃圾回收机制

​如何判断对象已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器在堆进行垃圾回收前,首先要判断这些对象那些还存活,那些已经“死去”。判断对象是否已“死”有如下几种算法:1引用计数法引用计数法描述的算法为:给…

EF sqlite3报错 System.Data.Entity.Core.EntityException: 在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。...

问题:sqlite3使用ef框架操作数据库报错 问题原因:数据库文件没有访问权限 结局方案:可以将数据库文件所在的文件夹的访问权限添加Everyone用户权限。 错误:"System.Data.Entity.Core.EntityException: 在提供程序连接上启动事…

oracle job定时报错,Oracle Job定时任务的使用详解

Oracle中的job能为你做的就是在你规定的时间格式里执行存储过程,定时执行一个任务 。下面是一个小案例,定时每15分钟向一张表插入一条数据一、步骤11.创建一张测试表-- Create tablecreate table A8(a1 VARCHAR2(500))tablespace DSP_DATApctfree 10init…

python调用ping命令_在Python中调用Ping命令,批量IP的方法

#!/usr/bin/env python #coding:UTF-8Author: jefferchen163.com 可在命令行直接带目的IP,也可将IP列表在文本文件中。 pingip.py -d DestIP DestIP示例: a)单个: 192.168.11.1 b)多个: 192.168.11.1;172.16.8.1;176.13.18.2 c)网段: 192.168…

thinkPHP伪静态,如何去掉index.php呢?

如何去掉index.php呢?1.httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACHE里面去配置#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉2.AllowOverride None 讲None改为 All //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为…

chown -r oracle:oinstall /oracle,CentOS7安装Oracle12c图文详解

root身份安装依赖包: yum -y install binutils compat-libcap1 compat-libstdc-33 compat-libstdc-33*.i686 elfutils-libelf-devel gcc gcc-c glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc libstdc*.i686 libstdc-devel li…

在苹果笔记本如何使用python_mac下如何将python2.7改为python3

1.查看当前电脑python版本 python -V // 显示2.7.x 2.用brew升级python brew update python 3.如果安装成功,去系统目录下回看到两个版本的python cd usr/local/Cellar/ //到此目录下 cd python/ //进入python目录下 查看已安装的python版本,如果有2.x 和…

[BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流

1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 3330 Solved: 1739 [Submit][Status][Discuss]Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求: 1、 …

oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...

Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码2013-07-300dmp文件导入导出步骤1.创建表空间--datafile 的路径随便给,但是后面的文件命名用dbfCREATE TABLESPACE DTBSLOGGINGDATAFILE D:\OracleDateFile\DTBS.DBF SIZE 32MAUTOEX…

python需要花钱下载吗_用Python下载知乎视频,非常实用

原标题:用Python下载知乎视频,非常实用Python下载知乎视频。 # -*- coding: utf-8 -*- """ 下载知乎视频: 依赖: pip install requests mac 安装 ffmpeg: brew install ffmpeg """ import re impor…

php instanceof 基类,PHP强制对象类型之instanceof操作符

一、简介在php(做为现在的主流开发语言)中实现强制对象类型有时可能非常重要。如果缺少了它,或是因为缺乏这方面的知识——基于不正确的编程假设,或者仅仅是由于懒惰,那么你会在特定的Web应用程序中看到你所不希望的结果。特别是当用php(做为…

msyql备份还原

MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。 1.Win32下MySQL的备份与还原 1.1 备份 开始菜单 | 运行 | cmd |利用“cd \Program Files\MySQL\MySQL Server 5.0\bin”命令进入bin文件夹 | 利用“mysqldump -u 用户名 -p databasename >exportfilename”…

python相比于excel的优势_对照Excel使用Python进行数据分析,更快掌握

Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用。不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础功能都是相通的。 在数据量级大…

oraoledb.oracle 12c,关于OraOLEDB.Oracle找不到驱动问题的一种可能解决方案

如果安装Oracle的时候没有把Oracle Provider for OLE DB,这个组件安装上,那么就会导致在使用程序的时候无法使用Oracle客户端驱动问题,弥补的办法就是重新下载客户端程序。以下介绍win 2008 x64 Oracle 11g x64情况搭建安装驱动程序首先得下…

python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作。分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy import signal, misc import matplotlib.pyplot as plt image misc.ascent()#二维图像数组…

linux命令行大全 笔记,《Linux命令行大全》读书笔记

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?shell就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统执行。当使用图像用户界面时,我们需要一个叫做终端仿真器…

dedecms 添加,编辑文章时 文章标题有字数限制的解决办法。

百度上说 解决方法有两步: 一、先要在系统参数下的其他选项中修改文档标题最大长度(如修改为150), 后台系统 - 其它选项 - 文档标题最大长度 默认的是60改为150, 二、修改默认参数后,需要手工修改数据表。 …