unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, OleServer, ComObj, Clipbrd, Buttons, ShellAPI;

//

务必加入ComObj

type

  TForm1

=

class

(TForm)

    btn3: TButton;

    btn1: TBitBtn;

    procedure btn3Click(Sender: TObject);

    procedure btn1Click(Sender: TObject);

private

...

{ Private declarations }

public

...

{ Public declarations }

  end;

//

合并两个Excel文件到一个Excel文件

function MergerExcel(sFile1Path, sFile2Path:

string

; sModelFile:

string

;

  sTargetFile:

string

;

out

sErrMsg:

string

): Boolean; overload;

//

合并多个Excel文件到一个Excel文件

function MergerExcel(sFileList: TStrings; sModelFile:

string

;

  sTargetFile:

string

;

out

sErrMsg:

string

): Boolean; overload;

var

  Form1: TForm1;

implementation

...

{$R*.dfm}

function MergerExcel(sFile1Path, sFile2Path:

string

; sModelFile:

string

; sTargetFile:

string

;

out

  sErrMsg:

string

): Boolean;

var ExcelApp: Variant;

  ExcelWorkBook1: OleVariant;

  ExcelWorkBook2: OleVariant;

  ExcelWorkBook3: OleVariant;

  i: Integer;

begin

  Result:

=

False;

try

    ExcelApp :

=

CreateOleObject(

'

Excel.Application

'

);

//

ExcelApp.Visible := True;

    ExcelWorkBook1 :

=

ExcelApp.WorkBooks.Open(sFile1Path);

    ExcelWorkBook2 :

=

ExcelApp.WorkBooks.Open(sFile2Path);

    ExcelWorkBook3 :

=

ExcelApp.WorkBooks.Open(sModelFile);

//

骤文件骤Sheet复制到模版文件中

for

i :

=

1

to ExcelWorkbook1.Sheets.Count

do

    begin

      ExcelWorkBook1.Sheets[i].Copy(Before :

=

ExcelWorkBook3.Sheets[i]);

    end;

    ExcelWorkBook1.Close;

for

i :

=

1

to ExcelWorkbook2.Sheets.Count

do

    begin

      ExcelWorkBook2.Sheets[i].Copy(Before :

=

ExcelWorkBook3.Sheets[i]);

    end;

    ExcelWorkBook2.Close;

//

删除可能已经存在的目标文件

if

FileExists(sTargetFile) then

      DeleteFile(sTargetFile);

//

将生成的Model文件另存为

ExcelWorkBook3.SaveAs(sTargetFile);

    ExcelWorkBook3.Close;

    ExcelApp.Quit;

    Result:

=

True;

  except

    on E: Exception

do

    begin

      sErrMsg :

=

E.Message;

      Result:

=

False;

    end;

  end;

end;

//

合并多个Excel文件到一个Excel文件

function MergerExcel(sFileList: TStrings; sModelFile:

string

;

  sTargetFile:

string

;

out

sErrMsg:

string

): Boolean;

var ExcelApp: Variant;

  ExcelWorkBookS: OleVariant;

  ExcelWorkBookD: OleVariant;

  i,iFileOrder: Integer;

begin

  Result:

=

False;

try

    ExcelApp :

=

CreateOleObject(

'

Excel.Application

'

);

//

ExcelApp.Visible := True;

    ExcelWorkBookD :

=

ExcelApp.WorkBooks.Open(sModelFile);

for

iFileOrder :

=

0

to sFileList.Count

-

1

do

    begin

      ExcelWorkBookS :

=

ExcelApp.WorkBooks.Open(sFileList.Strings[iFileOrder]);

//

骤文件骤Sheet复制到模版文件中

for

i :

=

1

to ExcelWorkbookS.Sheets.Count

do

      begin

        ExcelWorkBookS.Sheets[i].Copy(Before :

=

ExcelWorkBookD.Sheets[i]);

      end;

      ExcelWorkBookS.Close;

    end;

//

删除可能已经存在的目标文件

if

FileExists(sTargetFile) then

      DeleteFile(sTargetFile);

//

将生成的Model文件另存为

ExcelWorkBookD.SaveAs(sTargetFile);

    ExcelWorkBookD.Close;

    ExcelApp.Quit;

    Result:

=

True;

  except

    on E: Exception

do

    begin

      sErrMsg :

=

E.Message;

      Result:

=

False;

    end;

  end;

end;

procedure TForm1.btn3Click(Sender: TObject);

var sXlsFileName1, sXlsFileName2, sXlsFileName3, sTargetFile, s:

string

;

h:THandle;

begin

  sXlsFileName1 :

=

ExtractFilePath(Application.ExeName)

+

'

1.xls

'

;

  sXlsFileName2 :

=

ExtractFilePath(Application.ExeName)

+

'

2.xls

'

;

  sXlsFileName3 :

=

ExtractFilePath(Application.ExeName)

+

'

3.xls

'

;

  sTargetFile :

=

ExtractFilePath(Application.ExeName)

+

'

4.xls

'

;

  MergerExcel(sXlsFileName1, sXlsFileName2, sXlsFileName3, sTargetFile, s);

  ShellExecute(Handle,

'

open

'

, pchar(sTargetFile), nil, nil, SW_SHOWNORMAL);

end;

procedure TForm1.btn1Click(Sender: TObject);

var sl:TStrings;

  sModel,sTargetFile, s:

string

;

begin

  sl:

=

TStringList.Create;

  sl.Add(ExtractFilePath(Application.ExeName)

+

'

1.xls

'

);

  sl.Add(ExtractFilePath(Application.ExeName)

+

'

2.xls

'

);

  sl.Add(ExtractFilePath(Application.ExeName)

+

'

包装方案1.xls

'

);

  sl.Add(ExtractFilePath(Application.ExeName)

+

'

包装方案2.xls

'

);

  sl.Add(ExtractFilePath(Application.ExeName)

+

'

包装方案3.xls

'

);

  sModel:

=

ExtractFilePath(Application.ExeName)

+

'

3.xls

'

;

  sTargetFile:

=

ExtractFilePath(Application.ExeName)

+

'

4.xls

'

;

  MergerExcel(sl,sModel, sTargetFile, s);

end;

end.

合并excel文件 C语言,多个Excel文件中的多个Sheet合并到一个Excel文件中两个函数...相关推荐

  1. java复制sheet_java-poi 复制Sheet到另一个excel的sheet中

    原题链接在这里:https://leetcode.com/problems/excel-sheet-column-number/ 这道题与Excel Sheet Column Title相呼应.Tim ...

  2. 【 如何将.vue文件中的所有css代码放入一个.css文件中】

    javascript – 如何将.vue文件中的所有css代码放入一个.css文件中?

  3. 将excel中的多个sheet合并为一个sheet

    比较简单,直接看代码. import pandas as pd# 获取所有的sheet reader = pd.ExcelFile(r'path') sheet_names = reader.shee ...

  4. 用Python批量实现多Excel多Sheet合并的4种方法

    大家好,我是崔艳飞.前两天给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格 ...

  5. python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并

    一.前言 大家好,我是崔艳飞.前两天给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Ex ...

  6. 批量读取和写出excel数据#R语言#

    运用R语言处理数据时总会遇到大批量excel数据读取和写入的问题,以R中的iris数据集举例,主要有以下几种形式(直接上代码): 读入数据: 1.将多个excel数据批量读入R环境中(读入csv格式文 ...

  7. 用Python批量实现多Excel多Sheet合并,学会这4步就够了

    一.前言 Python自动化文章后续,有比较的读者面临这个问题,有很多个Excel表格,他需要对这些Excel文件进行合并. 诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文 ...

  8. 手把手教你4种方法用Python批量实现多Excel多Sheet合并

    一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一起来看看吧! 二.项目目标 用P ...

  9. 微软考虑将 Python 作为 Excel 官方脚本语言

    微软正考虑将 Python 作为 Excel 官方脚本语言之一,在 Excel 用户反馈平台中,「Python 作为 Excel 的脚本语言」成为了最热议的话题,是排名第二的提议的两倍多 目前为止,超 ...

最新文章

  1. 数学建模学习笔记——微分方程建模
  2. VirtualBox安装Fedora文件共享
  3. linux rar解压_linux命令
  4. android 非法字符 \ufeff错误
  5. 山西铁警演练防暴处突
  6. 用php mui ajax注册登录页面,ajax实现简单登录页面
  7. LDAP实现企业异构平台的统一认证
  8. 计算机二级java应用题怎么答,2015年计算机二级考试JAVA基本操作和简单应用题
  9. java俄罗斯方块代码_[转载]java编写的一个俄罗斯方块(源代码)
  10. Jdk(1.6和1.8)中英文Api文档
  11. css的样式局部作用,局部套用CSS样式.PPT
  12. 提供小图标(Icon)的网站(不定时更新)
  13. word文件退出只读模式
  14. 串口线的交叉直连之痛
  15. Qt开发总结(19)——Qt Charts
  16. Ruby 2.6 新特征介绍
  17. g6的minimap中的配置_Minimap 缩略图
  18. 在Ubuntu安装Deepin软件
  19. IOS开发音频与视频
  20. [Diary]毕业行程表--最后的十天

热门文章

  1. 为什么黑客无法攻击公开的区块链?
  2. 平台抗住日访问量 7 亿次,研发品控流程全公开
  3. 能力不错的大厂高 P,为什么过不了小厂的试用期?
  4. 东京疫情数据开源当日斩获2k+ star,GitHub疫情项目源源不断
  5. 耐克为何不接受加密货币付款?
  6. 苹果进入后 iPhone 时代!
  7. 如何能理解 Spring 框架的思想?
  8. “Scrum 敏捷开发都是骗人的!”
  9. 程序员如何备战全国计算机二级(Python)考试?
  10. “搞机器学习没前途”