`
touchmm
  • 浏览: 1044006 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Delphi生成多Sheet的Excel文件

阅读更多

Delphi生成多Sheet的Excel文件的代码。

----------------------------------------

uses ComObj;

//生成Excel表格头信息。//by JRQ 20091205
procedure CreatExcelTitle(ExlApp: OleVariant; SheetName: string);
var Range: OleVariant;
begin
ExlApp.Cells[1, 1].Value := '序号'; //第一行第1列
ExlApp.Cells[1, 2].Value := '档号'; //第一行第2列
ExlApp.Cells[1, 3].Value := '题名';
ExlApp.Cells[1, 4].Value := '起始日期';
ExlApp.Cells[1, 5].Value := '终止日期';
ExlApp.Cells[1, 6].Value := '保管期限';
ExlApp.Cells[1, 7].Value := '密级';

Range := ExlApp.WorkSheets[SheetName].Range['A1:G1']; //单元格从A2到M2 Range.Merge; //合并单元格
Range.Rows.RowHeight := 25; //设置行高
Range.HorizontalAlignment := 3; //水平对齐方式

Range.Columns[1].ColumnWidth := 6; //序号
Range.Columns[2].ColumnWidth := 20; //档号
Range.Columns[3].ColumnWidth := 60; //题名
Range.Columns[4].ColumnWidth := 12; //起始日期
Range.Columns[5].ColumnWidth := 12; //终止日期
Range.Columns[6].ColumnWidth := 8; //保管期限
Range.Columns[7].ColumnWidth := 8; //密级
end;


//数据集保存到Excel文件。by JRQ 20091205
function SaveToExcel(aFileName: string; aNum:string; aQry: TADOQuery): Boolean;
var
isExist: Boolean;
Row, i: Integer;
ExcelApp, WorkBook, WorkSheet: OleVariant;
SheetName, tmpSheetName: string;
begin
Result := False;
isExist := False;

//判断磁盘上是否已经存在Excel文件。
if FileExists(aFileName) then
isExist := True;

SheetName := '数据目录'+aNum; //第i个Sheet

try
ExcelApp := CreateOleObject('Excel.Application'); //首先创建 Excel 对象,使用ComObj:

if isExist then
ExcelApp.WorkBooks.Open(aFileName) //打开已存在的工作簿
else
WorkBook := ExcelApp.WorkBooks.Add; //新增一个工作簿

for i := 1 to ExcelApp.WorkSheets.Count do
begin
tmpSheetName := ExcelApp.WorkSheets[i].Name;

//如果有同名的Sheet,则删除之。
if tmpSheetName = SheetName then
begin
//ExcelApp.WorkSheets[SheetName].Activate; //设置一个活动的Sheet
//ExcelApp.WorkSheets[SheetName].Delete; //删除

ShowMessage('“' + SheetName + '”已经存在。请检查确认!');
ExcelApp.ActiveWorkBook.Saved := True; //放弃保存
ExcelApp.WorkBooks.Close; //关闭工作簿:

if not VarIsEmpty(ExcelApp) then
ExcelApp.Quit;

Result := False;
Exit;
end;
end;

WorkSheet := ExcelApp.WorkSheets.Add; //新建一个Sheet
ExcelApp.Visible := False;
WorkSheet.Name := SheetName; //Sheet名称
ExcelApp.WorkSheets[SheetName].Activate;
except
ShowMessage('创建 Excel 对象异常,生成Excel文件失败。请确认您的计算机是否安装了 Microsoft Office Excel 程序!');
ExcelApp.Quit;
Exit;
end;

CreatExcelTitle(ExcelApp, SheetName);
Row := 1;

try
aQry.First;
while not aQry.Eof do
begin
//写文件Excel
Row := Row + 1;
WorkSheet.Cells[Row, 1].Value := IntToStr(Row - 1); //'序号' ;
WorkSheet.Cells[Row, 2].Value := aQry.FieldByName('KEYWORD').AsString; //'档号'
WorkSheet.Cells[Row, 3].Value := aQry.FieldByName('TITLE').AsString; //'题名'
WorkSheet.Cells[Row, 4].Value := aQry.FieldByName('ZRZ').AsString; //'责任者'
WorkSheet.Cells[Row, 5].Value := aQry.FieldByName('RECORDDATE').AsString; //'日期'
WorkSheet.Cells[Row, 6].Value := aQry.FieldByName('BGQX').AsString; //'保管期限'
WorkSheet.Cells[Row, 7].Value := aQry.FieldByName('MJ').AsString; //'密级'
WorkSheet.Cells[Row, 8].Value := aQry.FieldByName('CONTROLID').AsString; //'划控'
aQry.Next;
application.ProcessMessages;
end;

try
ExcelApp.WorkSheets['Sheet1'].Activate; //设置一个活动的Sheet
ExcelApp.WorkSheets['Sheet1'].Delete; //删除
ExcelApp.WorkSheets['Sheet2'].Activate;
ExcelApp.WorkSheets['Sheet2'].Delete;
ExcelApp.WorkSheets['Sheet3'].Activate;
ExcelApp.WorkSheets['Sheet3'].Delete;
except
end;

if isExist then
begin
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.WorkBooks[1].Save;
end
else
ExcelApp.WorkBooks[1].SaveAs(aFileName, 56); //fileformat:=56 -- Office Excel 97-2003 format
finally
//删除后重命名
//tmpFileName := aFileName;
//Delete(tmpFileName,Pos(ExtractFileExt(aFileName),aFileName),Length(ExtractFileExt(aFileName)));
//tmpFileName:=tmpFileName+'_tmp'+ExtractFileExt(aFileName);
//ExcelApp.ActiveSheet.SaveAs(tmpFileName,56); //fileformat:=56 -- Office Excel 97-2003 format
{
try
if FileExists(aFileName) then
DeleteFile(aFileName);

RenameFile(tmpFileName, aFileName);
except
end;
}

ExcelApp.WorkBooks.Close; //关闭工作簿
if not VarIsEmpty(ExcelApp) then
ExcelApp.Quit;
ExcelApp := Unassigned;
end;
Result := True;
end;

----------------------------------------

by JRQ

2009/12/05 南京

分享到:
评论

相关推荐

    导出excel多个sheet.zip

    这个"导出excel多个sheet.zip"压缩包文件可能包含了一个使用Delphi编写的示例或库,用于帮助开发者实现这一功能。下面将详细解释这个过程涉及的知识点。 1. Delphi简介:Delphi是一款集成开发环境(IDE),主要用于...

    excel中的多个sheet自动另存为以sheet名称命名的excel文件

    最后,用户可以看到多个以Sheet名命名的Excel文件生成在指定目录下。 通过这个项目,我们可以学习到如何使用Delphi进行Office自动化,以及如何处理文件I/O操作。这对于需要大量处理Excel数据的场景非常有用,可以...

    delphi对Excel拷贝及粘贴

    在Delphi编程环境中,与Excel交互是常见的任务之一,特别是在数据处理、报表生成或数据分析的应用中。本篇文章将深入探讨如何在Delphi中实现对Excel的拷贝和粘贴操作,帮助开发者更有效地利用这两个基本功能来提升...

    Delphi控制Excel自动生成报表

    ### Delphi 控制 Excel 自动生成报表 在 IT 领域中,自动化工具和技术的应用极为广泛,其中一种常见的需求就是能够自动创建报表。利用 Delphi 这种强大的开发工具,结合 Microsoft Excel 的功能,可以实现高效的...

    delphi+fastreport+excel

    在Delphi中,可以通过FastReport的API与Excel进行交互,比如读取Excel文件中的数据,将这些数据填充到报表中,或者将报表导出为Excel格式。这通常涉及到对OLE Automation的支持,它是Windows操作系统提供的一种技术...

    delphi中全面控制excel

    在Delphi中,实现对Microsoft Excel的全面控制是许多应用中的常见需求,无论是用于数据分析、报表生成还是自动化任务处理。以下是从给定的文件标题、描述、标签以及部分内容中提炼出的关键知识点,这些知识点将帮助...

    delphi控制excel实例

    `Project1.exe`则是编译后的可执行文件,用户可以直接运行来体验这个Delphi控制Excel的实例。 `Unit1.pas`是Pascal源代码文件,其中包含了`Unit1`的逻辑代码。在这个文件中,我们可能会找到使用`ComObj`单元或者`Ms...

    delphi操作excel表格的实例

    在Delphi中操作Excel表格是一项常见的任务,尤其在数据处理、报表生成以及自动化办公场景下。本实例将探讨如何利用Delphi的COM组件接口来控制Microsoft Excel应用程序,实现对Excel表格的各种操作,如启动和关闭...

    Excel操作相关源码 Delphi

    3. `示例`: 这个文件可能是实际的源码示例,包含了一个或多个Delphi工程文件(.dpr或.dproj)、单元文件(.pas)和其他相关资源,展示了如何在Delphi中打开、读取、写入、修改Excel工作簿和工作表的具体步骤。...

    Delphi 12 控件之XLSSpreadSheet (XLSReadWriteII v6.01.19) (SRC) v3.0

    通过查看源码,我们可以学习到更多关于如何与Excel文件交互的底层细节。 总之,XLSSpreadSheet控件结合XLSReadWriteII库,为Delphi 12开发者提供了强大的Excel处理能力。无论是简单的数据读写,还是复杂的报表生成...

    读取Excel单个或多个Sheet返回DataSet例子

    本示例将详细介绍如何读取Excel文件中的单个或多个Sheet,并将其数据转换为DataSet或DataTable对象。这在数据分析、数据导入导出或者报表生成等场景中非常有用。 首先,我们需要一个能够处理Excel文件的库。在.NET ...

    最新整理DELPHI操作EXCEL函數

    在 DELPHI 开发中,操作 Excel 文件是一个常见的需求,特别是在数据处理和报表生成的场景下。本篇文章将深入探讨如何使用 DELPHI 的 COM 对象接口与 Excel 进行交互,实现各种基本操作。 首先,操作 Excel 需要引入...

    delphi导出数据至Excel的七种方法及比较

    **描述**:Delphi 提供了如 `ExcelFile` 组件等用于读写 Excel 文件的功能。 **示例代码**: ```delphi uses ExcelFile; procedure ExportToExcel(const AQuery: TADOQuery; const AFileName: string); var ...

    excel读写_delphi7_

    当我们谈论“Excel读写”时,通常是指利用Delphi 7来操作Microsoft Excel文件,实现数据的导入、导出或编辑功能。这种能力对于数据处理、报告生成、自动化工作流等应用场景非常重要。 首先,我们需要引入一个名为`...

    delphi对excel的控制操作

    当需要在Delphi程序中与Excel交互时,可以实现诸如读取、写入、编辑和格式化Excel文件等功能,为用户提供了一种灵活的数据操作方式。本文将详细介绍如何在Delphi中进行Excel的控制操作。 首先,要进行Delphi对Excel...

    Delphi操作Excel大全

    在 Delphi 中操作 Excel 是一个常见的任务,尤其是在自动化数据处理、报表生成以及数据分析等领域。本文将详细介绍如何使用 Delphi 的 COM 对象接口与 Microsoft Excel 进行交互。 首先,要操作 Excel,我们需要...

    Delphi操作EXCEL示例

    7. **生成透视表**: 透视表是数据分析的重要工具,Delphi可以通过Excel的API调用来创建。首先选择数据源,然后定义透视表字段,最后设置透视表的布局和格式。 8. **编译与运行**: 包含的`.dpr`(项目文件)、`.pas`...

    Delphi对Excel的所有操作.doc

    在 Delphi 中操作 Excel 文件是一项常见的任务,...了解并熟练运用这些方法,你就可以在 Delphi 中自由地处理 Excel 文件,实现自动化数据管理和报告生成。通过不断实践和学习,你将成为 Delphi 中操作 Excel 的专家。

    用Delphi控制Excel的数据

    在IT行业中,使用编程语言控制Office应用程序,如Excel,是一种常见的需求。对于Delphi开发者来说,这使得他们能够自动化...在实践中,不断探索和掌握更多的Delphi与Excel交互技巧,将有助于构建更强大的数据处理系统。

    Delphi控制Excel的重要属性和方法

    在 Delphi 中控制 Excel 是一个常见的任务,特别是在需要自动化处理电子表格数据或生成报表的场景下。本文将详细介绍如何使用 Delphi 的 COM & ActiveX 技术来操控 Excel 2000,主要涉及以下几个关键属性和方法。 1...

Global site tag (gtag.js) - Google Analytics