数据集DataSet导出到Excel

centos7部署 datagear 以及数据迁移 DataGear是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。 系统主要功能包括:数据管理、SQL工作台、数据导入/导出、数据集管理、图表管理、看板管理等。......... 阅读详情

 

{   背景:今天要把DataSet导入Excel,查询以前的贴子,一部分用Ole,速度太慢,
          一部分用ADO连接到Excel文件,也很慢,一气之下把DBGrigEh的导出部分改了出来,
          欢迎大家指教、改进。
    功能:将数据集的数据导入Excel;
    用法:With TDS2Excel.Create(TDataSet(ADOQuery1)) do
          Try
            Save2File(SaveDialog1.FileName, True);
          finally
            Free;
          end;
    作者:Caidao (核心代码来自Ehlib)
    时间:2003-04-09
    地点:汕头
}    


unit UntObject;

interface

Uses
  DB, Classes;

var
  CXlsBof: array[0..5] of Word = ($809, 8, 0, $10, 0, 0);
  CXlsEof: array[0..1] of Word = ($0A, 00);
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);
  CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);
  CXlsBlank: array[0..4] of Word = ($201, 6, 0, 0, $17);



Type
  TDS2Excel = Class(TObject)
  Private
    FCol: word;
    FRow: word;
    FDataSet: TDataSet;
    Stream: TStream;
    FWillWriteHead: boolean;
    FBookMark: TBookmark;
    procedure IncColRow;
    procedure WriteBlankCell;
    procedure WriteFloatCell(const AValue: Double);
    procedure WriteIntegerCell(const AValue: Integer);
    procedure WriteStringCell(const AValue: string);
    procedure WritePrefix;
    procedure WriteSuffix;
    procedure WriteTitle;
    procedure WriteDataCell;

    procedure Save2Stream(aStream: TStream);
  Public
    procedure Save2File(FileName: string; WillWriteHead: Boolean);
    Constructor Create(aDataSet: TDataSet);
  end;

implementation

uses SysUtils;

Constructor TDS2Excel.Create(aDataSet: TDataSet);
begin
  inherited Create;
  FDataSet := aDataSet;
end;

procedure TDS2Excel.IncColRow;
begin
  if FCol = FDataSet.FieldCount - 1 then
  begin
    Inc(FRow);
    FCol :=0;
  end
  else
    Inc(FCol);
end;

procedure TDS2Excel.WriteBlankCell;
begin
  CXlsBlank[2] := FRow;
  CXlsBlank[3] := FCol;
  Stream.WriteBuffer(CXlsBlank, SizeOf(CXlsBlank));
  IncColRow;
end;

procedure TDS2Excel.WriteFloatCell(const AValue: Double);
begin
  CXlsNumber[2] := FRow;
  CXlsNumber[3] := FCol;
  Stream.WriteBuffer(CXlsNumber, SizeOf(CXlsNumber));
  Stream.WriteBuffer(AValue, 8);
  IncColRow;
end;

procedure TDS2Excel.WriteIntegerCell(const AValue: Integer);
var
  V: Integer;
begin
  CXlsRk[2] := FRow;
  CXlsRk[3] := FCol;
  Stream.WriteBuffer(CXlsRk, SizeOf(CXlsRk));
  V := (AValue shl 2) or 2;
  Stream.WriteBuffer(V, 4);
  IncColRow;
end;

procedure TDS2Excel.WriteStringCell(const AValue: string);
var
  L: Word;
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := FRow;
  CXlsLabel[3] := FCol;
  CXlsLabel[5] := L;
  Stream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  Stream.WriteBuffer(Pointer(AValue)^, L);
  IncColRow;
end;

procedure TDS2Excel.WritePrefix;
begin
  Stream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
end;

procedure TDS2Excel.WriteSuffix;
begin
  Stream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
end;

procedure TDS2Excel.WriteTitle;
var
  n: word;
begin
  for n := 0 to FDataSet.FieldCount - 1 do
    WriteStringCell(FDataSet.Fields[n].FieldName);
end;

procedure TDS2Excel.WriteDataCell;
var
  n: word;
begin
  WritePrefix;
  if FWillWriteHead then WriteTitle;
  FDataSet.DisableControls;
  FBookMark := FDataSet.GetBookmark;
  FDataSet.First;
  while not FDataSet.Eof do
  begin
    for n := 0 to FDataSet.FieldCount - 1 do
    begin
      if FDataSet.Fields[n].IsNull then
        WriteBlankCell
      else begin
        case FDataSet.Fields[n].DataType of
          ftSmallint, ftInteger, ftWord, ftAutoInc, ftBytes:
              WriteIntegerCell(FDataSet.Fields[n].AsInteger);
          ftFloat, ftCurrency, ftBCD:
              WriteFloatCell(FDataSet.Fields[n].AsFloat);
        else
          WriteStringCell(FDataSet.Fields[n].AsString);
        end;
      end;
    end;
    FDataSet.Next;
  end;
  WriteSuffix;
  if FDataSet.BookmarkValid(FBookMark) then FDataSet.GotoBookmark(FBookMark);
  FDataSet.EnableControls;
end;

procedure TDS2Excel.Save2Stream(aStream: TStream);
begin
  FCol := 0;
  FRow := 0;
  Stream := aStream;
  WriteDataCell;
end;

procedure TDS2Excel.Save2File(FileName: string; WillWriteHead: Boolean);
var
  aFileStream: TFileStream;
begin
  FWillWriteHead := WillWriteHead;
  if FileExists(FileName) then DeleteFile(FileName);
  aFileStream := TFileStream.Create(FileName, fmCreate);
  Try
    Save2Stream(aFileStream);
  Finally
    aFileStream.Free;
  end;
end;

end.

 

  
  

 2003-6-21 21:03:31    增加一个过程,用起来要方便一些

procedure TDS2Excel.Save2File(WillWriteHead: Boolean);
var
  SaveDialog1: TSaveDialog;
begin
  SaveDialog1 := TSaveDialog.Create(nil);
  Try
    SaveDialog1.Filter := 'Excel文档|*.xls';
    SaveDialog1.InitialDir := 'D:/';
    if not SaveDialog1.Execute then exit;
    Save2File(SaveDialog1.FileName, WillWriteHead);
  Finally
    SaveDialog1.Free;
  end;
end;

 
ENVI5.6 批量处理GF-2/GF-6/GF-7:从安装到融合的完整自动化流程 本文详细介绍了ENVI5.6环境下批量处理GF-2/GF-6/GF-7卫星数据的完整自动化流程,包括环境配置、工具安装、正射校正、图像融合等关键步骤。通过实战案例和优化技巧,帮助用户高效完成高分卫星影像处理,提升工作效率。特别针对GF-6和GF-7的特殊处理要点进行了深入解析。 阅读详情

相关推荐

半导体物理-Si晶体生长方向<2>

Si(硅)晶体的生长方向是一个重要的概念,尤其在半导体工业中。这个概念涉及到晶体在生长过程中原子排列的方向,对晶体的性质和应用有重大影响。让我为您详细解释:理解Si晶体的生长方向对于半导体材料的研究和应用非常重要,它直接影响了最终器件的性能和制造工艺。在实际应用中,选择适当的生长方向可以优化器件性能,提高产品质量。

m0_37606066的博客 2989

DataGear 制作支持导出表格数据的数据可视化看板

DataGear 内置表格图表底层采用的是DataTable表格组件,默认只引入了基本表格功能JS库,并未引入导出数据的JS支持库,如果有导出表格数据需求,则可以在看板中引入导出相关JS支持库,制作具有导出CSV、Excel、PDF功能的表格数据看板。......

datagear的博客 1569

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 405

DataGear(3)、导入数据操作

ALTER TABLE `餐饮数据` MODIFY COLUMN `人均` DECIMAL(10, 2) DEFAULT NULL;第三步注意,导入的表名称要跟我们闯进的表名称相符,默认的表名称是导入的文件名,如果不一致,需要修改表名称。`口味` DECIMAL(3, 1) DEFAULT NULL,`环境` DECIMAL(3, 1) DEFAULT NULL,`口味` DECIMAL(3, 1) DEFAULT NULL,`环境` DECIMAL(3, 1) DEFAULT NULL,

BGD10450173的博客 1398

高效爬取懂车帝车型数据:从静态解析到动态反爬实战

本文详细解析了如何高效爬取懂车帝车型数据,从静态HTML解析到动态接口反爬的完整实战路径。文章重点介绍了使用浏览器开发者工具定位数据、应对CSS混淆与参数加密等反爬策略,并提供了整合静态与动态抓取逻辑的Python代码示例,帮助开发者稳健地获取结构化车型信息。

wind6的博客 937

【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;

本文给大家带来的改进内容是在YOLOv11中更换主干网络为RepViT,助力YOLOv11有效涨点,论文通过集成轻量级 ViT 的高效架构设计,逐步增强了标准轻量级 CNN(即 MobileNetV3)的移动友好性。这最终产生了一个新的纯轻量级 CNN 系列的主干网络。

qq_41304809的博客 785

DataGear(2)、进入系统在数据库中创建表

首先创建表的时候,需要有表的名称,以及字段的名称,和字段的类型。类似我们的word文档中的表格,表的名称相当于文档的名称,字段相当于每一列的名称,字段类型分为字符型(用来存放文字),数字型(用来存放数字),日期型(用来存放日期),等等。第一个数据源类型,下拉以后可以看到系统已经配置了很多数据库类型的驱动,我们选择第一个MySQL,主机名/IP这里,输入我们数据库的网络地址,我们输入微信群里面公布的地址,端口号3306一般不用修改,数据源名称输入MySQL中的数据库的名称,我们输入student。

BGD10450173的博客 1992

科研级实战】YOLOv11 pose部署至RK3588全流程:让姿态估计模型在边缘端毫秒级运行,我来帮你突破人体行为分析落地壁垒

在智慧安防人体行为分析场景中,基于YOLOv11 pose的模型在云端推理单帧耗时150ms,硬件成本超15000元;经本方案部署到RK3588后,单帧推理耗时降至30ms,硬件成本仅4000元,且关键点检测准确率高达93%以上。在运动姿态评估场景,同款技术路径使模型边缘端推理速度提升6倍,姿态分类精度达95%。这意味着,你也能让自己的姿态估计模型在边缘设备上实现的工业化落地,接下来让我们开启从模型训练到端侧部署的实战征程。

m0_71589036的博客 223

向DataGrip导入excel表数据

向DataGrip导入excel表数据 因为目前DataGrip不支持直接导入Excel,可以将Excel导出为csv文件进行导入:文件=>导出=》更改文件类型=>在其他文件类型中选择CSV文件 在DataGrip中右键目标表,选择 Import Data from File 导入数据即可,具体操作如下: 首先将excel表格式换成.csv文件: 打开要导入的excel表,点击右上角的文件,选则另存为,文件类型选择CSV,选好后点击保存 向DataGrip中相对应的表导入这个CSV文件 打开D

qq_39130870的博客 1万+

手把手教你学SOC芯片架构--NoC(片上网络,Network on Chip)全方位解析

​、​。

MHD0815的博客 863

Python爬虫教程:抓取社交媒体内容(以Facebook和Instagram为例)

为什么抓取社交媒体内容?品牌分析与监测:通过抓取品牌、产品或服务相关的社交媒体数据,可以获得公众对其的评价,识别市场趋势,制定营销策略。情感分析:分析用户在社交平台上的情感倾向,如对某事件、产品、服务的正面或负面情绪。舆情监控:通过抓取大量社交媒体内容,监测公众对热点事件的反应,发现潜在的社会问题。用户行为分析社交媒体的数据类型:帖子和内容:包括用户发布的文本、图片、视频等。用户互动用户信息:包括用户名、粉丝数、关注数等社交信息。社交媒体的反爬虫机制:API限制。

2201_76125261的博客 1337

DataSet数据集导出成为Excel或Xml

 DataSet数据集导出成为Excel或Xml阅读(33) 评论(0) 发表时间:2008年03月31日 17:05本文地址:http://qzone.qq.com/blog/657509172-1206954329

479

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

XiaoqiangClub的博客 1万+

C#将数据集DataSet中的数据导出到EXCEL文件的几种方法

[size=medium][size=x-large]using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Windows.Forms; using System.Reflection; namespace DMS { /// //...

yaoyanzhu的博客 667

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

nativeexcel数据集导出excel

nativeexcel数据集导出excel uses Dataset2Excel; procedure Tfdm.exportXLS(dataset: TDataSet);var xls: TDataset2Excel; sd: TSaveDialog;begin if dataset = nil then Exit; sd := TSaveDialog.Create(nil); ...

weixin_33682790的博客 704

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Excel编程之Dataset导出到excel

public class DataSetToExcel { /// /// 将数据集中的数据导出到EXCEL文件,可导出乡村代码 /// /// 输入数据集 /// 是否显示该EXCEL文件 /// 保存路径 /// public static bool D

天凉好个秋 526

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数据集DataSet 转入Excel

将数据集中的数据转到Excel或者Word 中是系统中常见的要求。

wangxiaowen1988的专栏 364

C#导出Excel

数据导出到Excel(或Word)源代码大全 在日常工作中,大家都习惯Office作为办公软件,因此,在开发软件的时,常常会有把数据导出到Excel等Office软件的需求。在此,收集一些常用的导出文件的源程序,希望给大家带来方便。(不断更新) 一、DataSet数据集内数据转化为Excel // 作用:把DataSet数据集内数据转化为Excel、Word文件 // 描述

foart的专栏 2849

asp.net里导出excel表方法汇总

1、由dataset生成以下为引用的内容:public void CreateExcel(DataSet ds,string typeid,string FileName)    {   HttpResponse resp;   resp = Page.Response;   resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");   resp.AppendHeader("Content-Disposition", "attach

jaylongli的专栏 2050

关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中

几经查询资料,我完成了这个看似结果还不错的任务,在解决任务的过程也也遇到了很多的问题,但最后胜利的成果还是要和大家分享一下, 大家看看有没有什么问题,多提提意见,有更好的可以给我看看,我需要。 代码如下 using System;using System.Data;using System.Configuration;using System.Collections;using System...

weixin_34348805的博客 172

C#导出EXCEL的几种方法

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Windows.Forms; using System.Reflection; namespace DMS { /// <summary> /// C#操作Exce...

weixin_30294021的博客 67
上一篇: C++与DELPHI转换规则
下一篇: 为cxGrid添加行号
火龙岛主
博客等级 码龄25年 256粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值