信息化时代,办公电子化已成了每个部门单位不可或缺的组成部分,其中也免不了要经常
使用微软的EXCEL电子表格,通过对电子表格的灵活运用,极大方便和提高了办公效率。
在具体工作中,经常会碰到两张电子表格的比对或合并问题。即你所需要的信息往往是在
两张不同的表格中。如果要手工把两张表格的内容根据某个关键字段比对或合并在一起,将会
消耗您大量宝贵的时间和精力。为此,作者专门编写了一个通用的EXCEL清册比对合并软件,来
提高效率,并把它分享给每一位需要的朋友。大家如果在使用中发现问题或有更好的建议可以
联系QQ:175624411,或来信EMAIL:zjdyzqh@163.com,我将尽力予以吸纳改善该软件系统。
效果图:
代码如下:
//工徎文件
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := '清册比对';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
//主单元文件
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
btnGetData: TButton;
sgSheet1: TStringGrid;
Label1: TLabel;
Label4: TLabel;
Label5: TLabel;
cmbSheet1: TComboBox;
btnOk: TButton;
Panel1: TPanel;
Panel2: TPanel;
chkTitle: TCheckBox;
chkDispLabel: TCheckBox;
Panel3: TPanel;
chkDataRange: TCheckBox;
rgDispLabel: TRadioGroup;
edtDispLabelSheet1: TEdit;
rgDataRange: TRadioGroup;
Panel4: TPanel;
edtDispLabelSheet2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label2: TLabel;
Label3: TLabel;
edtFile1: TEdit;
bbtnOpen1: TBitBtn;
Label6: TLabel;
cmbSheet2: TComboBox;
edtFile2: TEdit;
bbtnOpen2: TBitBtn;
sgSheet2: TStringGrid;
edtTitle: TEdit;
odFile1: TOpenDialog;
odFile2: TOpenDialog;
sbTip: TStatusBar;
Label7: TLabel;
Timer1: TTimer;
procedure btnGetDataClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sgSheet1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure sgSheet1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormDestroy(Sender: TObject);
procedure cmbSheet1KeyPress(Sender: TObject; var Key: Char);
procedure sgSheet1Click(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure bbtnOpen1Click(Sender: TObject);
procedure bbtnOpen2Click(Sender: TObject);
procedure chkTitleClick(Sender: TObject);
procedure chkDispLabelClick(Sender: TObject);
procedure chkDataRangeClick(Sender: TObject);
procedure sgSheet2SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
procedure InitControlState;
function InvalidCheck : Boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses ComObj, Gauges, Unit2, Unit3;
var
xlApp, xlWorkbook: Variant;
FCheck, FUnCheck: TBitmap; //复选框位图
slSource: TStringList; //结果表内容
StartRowSheet1, StartRowSheet2: Cardinal; //起始行
EndRowSheet1, EndRowSheet2: Cardinal; //结尾行
PrimaryColSheet1, PrimaryColSheet2: Cardinal; //关键列
RowDispLabel1, RowDispLabel2: Cardinal; //字段所在行
t: byte;// 控制提示字符动起来
procedure TForm1.bbtnOpen1Click(Sender: TObject);
var
i: integer;
begin
odFile1.Filter := '*.xls';
if odFile1.Execute then
begin
if not FileExists(odFile1.FileName) then
begin
ShowMessage('你选择的文件不存在,请重新选择!');
Exit;
end;
edtFile1.ReadOnly := False;
edtFile1.Text := odFile1.FileName;
edtFile1.ReadOnly := True;
//打开工作薄
xlWorkbook := xlApp.WorkBooks.Open(edtFile1.Text);
//初始化工作表选项
cmbSheet1.Clear;
for i := 1 to xlWorkbook.Sheets.Count do
cmbSheet1.Items.Add(xlWorkbook.Sheets[i].name);
cmbSheet1.ItemIndex := 0;
xlWorkbook.Close;
end;
end;
procedure TForm1.bbtnOpen2Click(Sender: TObject);
var
i: integer;
begin
odFile2.Filter := '*.xls';
if odFile2.Execute then
begin
if not FileExists(odFile2.FileName) then
begin
ShowMessage('你选择的文件不存在,请重新选择!');
Exit;
end;
edtFile2.ReadOnly := False;
edtFile2.Text := odFile2.FileName;
edtFile2.ReadOnly := True;
//打开工作薄
xlWorkbook := xlApp.WorkBooks.Open(edtFile2.Text);
//初始化工作表选项
cmbSheet2.Clear;
for i := 1 to xlWorkbook.Sheets.Count do
cmbSheet2.Items.Add(xlWorkbook.Sheets[i].name);
cmbSheet2.ItemIndex := 0;
xlWorkbook.Close;
end;
end;
procedure TForm1.btnGetDataClick(Sender: TObject);
var
x, y: Integer;
frm: TForm; //显示进度条的窗体
gg: TGauge;
{var
id : THandle;}
begin
//有效性检验
if (cmbSheet1.Text = '') or (cmbSheet2.Text = '') then
begin
ShowMessage('请选择要操作的表格后再继续!');
Exit;
end;
chkDispLabel.Enabled := True;
chkDataRange.Enabled := True;
btnGetData.Enabled := False;
Screen.Cursor := crHourGlass;
//取得表一的已使用单元格行列总数
xlWorkbook := xlApp.WorkBooks.Open(edtFile1.Text);
xlWorkbook.Sheets[cmbSheet1.Text].Activate;
sgSheet1.RowCount := xlWorkbook.ActiveSheet.UsedRange.Rows.Count;
sgSheet1.ColCount := xlWorkbook.ActiveSheet.UsedRange.Columns.Count;
//显示进度条
frm := TForm.Create(nil);
frm.BorderStyle := bsNone; //去掉边框
frm.Width := 402;
frm.Height := 27;
frm.Position := poScreenCenter;
gg := TGauge.Create(frm);
gg.Width := 400;
gg.Height := 25;
gg.Left := 1;
gg.Top := 1;
gg.MinValue := 0;
gg.MaxValue := sgSheet1.RowCount;
gg.Parent := frm;
gg.BackColor := clSilver;
gg.ForeColor := clMoneyGreen;
frm.Show; //ShowModal会阻塞
frm.BringToFront;
//绘复选框状态 准备
for x := 0 to sgSheet1.ColCount - 1 do
sgSheet1.Cells[x, 0] := 'y';
//赋值到StringGrid
for x := 0 to sgSheet1.RowCount-1 do
begin
for y := 0 to sgSheet1.ColCount-1 do
begin
try
sgSheet1.Cells[y, x+1] := xlWorkbook.ActiveSheet.cells[x+1, y+1].value;
Application.ProcessMessages;
except
ShowMessage('出错在表格'+'['+Inttostr(x+1)+','+Inttostr(y+1)+']单元格,请检查!');
exit;
end;
end;
gg.Progress := gg.Progress + 1;
end;
//设置列宽
for y := 0 to sgSheet1.ColCount-1 do
sgSheet1.ColWidths[y] := xlWorkbook.ActiveSheet.Columns[y+1].ColumnWidth*5;
//关闭
xlWorkbook.Close;
//取得表二的已使用单元格行列总数
xlWorkbook := xlApp.WorkBooks.Open(edtFile2.Text);
xlWorkbook.Sheets[cmbSheet2.Text].Activate;
sgSheet2.RowCount := xlWorkbook.ActiveSheet.UsedRange.Rows.Count;
sgSheet2.ColCount := xlWorkbook.ActiveSheet.UsedRange.Columns.Count;
//进度条复位
gg.Progress := 0;
gg.MaxValue := sgSheet2.RowCount;
//赋值到StringGrid
for x := 0 to sgSheet2.ColCount - 1 do
sgSheet2.Cells[x, 0] := 'y';
for x := 0 to sgSheet2.RowCount-1 do
begin
for y := 0 to sgSheet2.ColCount-1 do
begin
sgSheet2.Cells[y, x+1] := xlWorkbook.ActiveSheet.cells[x+1, y+1].value;
Application.ProcessMessages;
end;
gg.Progress := gg.Progress + 1;
end;
//设置列宽
for y := 0 to sgSheet2.ColCount-1 do
sgSheet2.ColWidths[y] := xlWorkbook.ActiveSheet.Columns[y+1].ColumnWidth*5;
//退出进度条窗体
frm.ModalResult := 1;
frm.Free;
btnGetData.Enabled := True;
Screen.Cursor := crDefault;
// CreateThread(nil, 0, @GetData, nil, 0, id);
end;
procedure TForm1.btnOkClick(Sender: TObject);
var
i,j,k : integer;
ccols: integer;
s : string; //表格的行内容
arrFlag1, arrFlag2: array of Boolean; //存放两张表有否相同记录的标志
sdSaveName: TSaveDialog;
sFile: string; //保存的文件名
colWidth: array of integer;//输出表列宽
begin
slSource.Clear;
//有效性检查
if not InvalidCheck then Exit;
chkDispLabel.Enabled := False;
chkDataRange.Enabled := False;
btnOk.Enabled := False;
Screen.Cursor := crHourGlass;
//保存已选输出列的列宽到数组
for i := 0 to sgSheet1.ColCount - 1 do
if sgSheet1.Cells[i, 0] = 'y' then
begin
//表一列宽
setLength(colWidth, Length(colWidth)+1);
colWidth[High(colWidth)] := sgSheet1.ColWidths[i];
end;
//表二列宽
for i := 0 to sgSheet2.ColCount - 1 do
if sgSheet2.Cells[i, 0] = 'y' then
begin
setLength(colWidth, Length(colWidth)+1);
colWidth[High(colWidth)] := sgSheet2.ColWidths[i];
end;
//开始比对合并
slSource.Add(edtTitle.Text);
if chkDispLabel.Checked then
begin
for i := 0 to sgSheet1.ColCount - 1 do
if sgSheet1.Cells[i, 0] = 'y' then
begin
s := s + sgSheet1.Cells[i, RowDispLabel1] + Chr(9);
//保存已选输出列的列宽到数组
setLength(colWidth, Length(colWidth)+1);
colWidth[High(colWidth)] := sgSheet1.ColWidths[i] div 5;
end;
for i := 0 to sgSheet2.ColCount - 1 do
if sgSheet2.Cells[i, 0] = 'y' then
begin
s := s + sgSheet2.Cells[i, RowDispLabel2] + Chr(9);
//保存已选输出列的列宽到数组
setLength(colWidth, Length(colWidth)+1);
colWidth[High(colWidth)] := sgSheet2.ColWidths[i] div 5;
end;
//添加到字符串列表
slSource.Add(s);
end;
s := '';
SetLength(arrFlag1, sgSheet1.RowCount);
SetLength(arrFlag2, sgSheet2.RowCount);
for i := Low(arrFlag1) to High(arrFlag1) do
arrFlag1[i] := False;
for i := Low(arrFlag2) to High(arrFlag2) do
arrFlag2[i] := False;
//表间数据比对循环
for i := StartRowSheet1 to EndRowSheet1 do
begin
for j := StartRowSheet2 to EndRowSheet2 do
begin
if sgSheet1.Cells[PrimaryColSheet1, i] = sgSheet2.Cells[PrimaryColSheet2, j] then
begin
for k := 0 to sgSheet1.ColCount - 1 do
if sgSheet1.Cells[k, 0] = 'y' then
begin
s := s + sgSheet1.Cells[k, i] + Chr(9);
end;
for k := 0 to sgSheet2.ColCount - 1 do
if sgSheet2.Cells[k, 0] = 'y' then
begin
s := s + sgSheet2.Cells[k, j] + Chr(9);
end;
slSource.Add(s);
//设置表二相应行号的比对标记
arrFlag1[i] := True;
arrFlag2[j] := True;
//退出 for j 的循环
Break;
end;//if sgSheet1.cells
end; //for j
s := '';
end; //for i
s := '';
//将表一独有或表二独有的记录添加到结果列表
for i := StartRowSheet1 to EndRowSheet1 do
begin
//表一独有
if not arrFlag1[i] then
begin
for k := 0 to sgSheet1.ColCount - 1 do
if sgSheet1.Cells[k, 0] = 'y' then
begin
s := s + sgSheet1.Cells[k, i] + Chr(9);
end;
slSource.Add(s);
s := '';
end;
end;
//表二独有
for i := StartRowSheet2 to EndRowSheet2 do
begin
if not arrFlag2[i] then
begin
for k := 0 to sgSheet1.ColCount - 1 do
if sgSheet1.Cells[k, 0] = 'y' then
begin
s := s + Chr(64) + Chr(9);
end;
for k := 0 to sgSheet2.ColCount - 1 do
if sgSheet2.Cells[k, 0] = 'y' then
begin
s := s + sgSheet2.Cells[k, i] + Chr(9);
end;
slSource.Add(s);
s := '';
end;
end;
btnOk.Enabled := True;
Screen.Cursor := crDefault;
//保存结果
sdSaveName := TSaveDialog.Create(nil);
try
sdSaveName.Filter := '*.xls';
if sdSaveName.Execute then
begin
if ExtractFileExt(sdSaveName.FileName) <> '.xls' then
sdSaveName.FileName := sdSaveName.FileName + '.xls';
if FileExists(sdSaveName.FileName) then
begin
if ID_NO = Application.MessageBox('文件已存在,是否覆盖!', '提示', MB_YesNo) then
begin
Exit;
end;
end;
sFile := sdSaveName.FileName;
slSource.SaveToFile(sFile);
ShowMessage('恭喜,保存成功!');
//关闭打开的Excel工作薄 ,为打开结果表准备
if not VarIsEmpty(xlApp) then
begin
xlApp.Workbooks.Close;
xlWorkbook := UnAssigned;
end;
xlWorkbook := xlApp.WorkBooks.Open(sFile);
//是否要设置格式
if ID_YES = Application.MessageBox('是否要设置结果表显示格式!', '提示', MB_YesNo) then
begin
//设置单元格格式
//列宽 和//标题
ccols := xlWorkbook.ActiveSheet.UsedRange.Columns.Count;
for i := 0 to ccols - 1 do
xlWorkbook.ActiveSheet.Columns[i+1].ColumnWidth := colWidth[i];
xlWorkbook.ActiveSheet.Range['A1:'+Char(64+ccols)+'1'].Merge;
xlWorkbook.ActiveSheet.Rows[1].RowHeight := 1.2/0.035;
xlWorkbook.ActiveSheet.Rows[1].Font.Name := '隶书';
xlWorkbook.ActiveSheet.Rows[1].Font.Size := 16;
xlWorkbook.ActiveSheet.Rows[1].Font.Bold := True;
xlWorkbook.ActiveSheet.Rows[1].Font.Color := clBlue;
xlWorkbook.ActiveSheet.Rows[1].HorizontalAlignment := 3; //水平居中
xlWorkbook.ActiveSheet.Rows[1].VerticalAlignment:= 2; //垂直居中
//按指定条件 设置单元格格式
With TForm2.Create(Self, xlWorkbook) do
begin
ShowModal;
end;
end;
//是否打开工作表提示
{ if ID_NO = Application.MessageBox('是否打开保存的结果表!', '提示', MB_YesNo) then
begin
Exit;
end; }
//显示
xlApp.Visible := True;
end;
finally
sdSaveName.Free;
end;
end;
procedure TForm1.chkDataRangeClick(Sender: TObject);
begin
rgDataRange.Enabled := chkDataRange.Checked;
if chkDataRange.Checked then rgDataRange.ItemIndex := 0;
end;
procedure TForm1.chkDispLabelClick(Sender: TObject);
begin
rgDispLabel.Enabled := chkDispLabel.Checked;
if chkDispLabel.Checked then rgDispLabel.ItemIndex := 0;
end;
procedure TForm1.chkTitleClick(Sender: TObject);
begin
edtTitle.Enabled := chkTitle.Checked;
end;
procedure TForm1.cmbSheet1KeyPress(Sender: TObject; var Key: Char);
begin
key := #0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #13, #8]) then key := #0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #13, #8]) then key := #0;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
bmp: TBitmap;
begin
btnGetData.Caption := '提取数据';
btnOk.Caption := '比对合并';
sbTip.Panels[0].Text := ' ' + FormatDateTime('yyyy-mm-dd', now) + ' '+
FormatDateTime('ddd', now);
//打开Excel
try
xlApp := CreateOleObject('EXCEL.Application');
except
ShowMessage('打开Excel文件有误或你的系统未安装Excel!');
xlApp.Quit;
xlApp := Unassigned;
exit;
end;
//创建CheckBox选择框图
FCheck := TBitmap.Create;
FUnCheck := TBitmap.Create;
//画CheckBox 选择框 (先取得系统的复选框位图)
bmp := TBitmap.Create;
try
bmp.Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
with FUnCheck do
begin
width := bmp.Width div 4;
height := bmp.Height div 3;
Canvas.CopyRect(Canvas.ClipRect, bmp.Canvas, Canvas.ClipRect);
end;
with FCheck do
begin
width := bmp.Width div 4;
height := bmp.Height div 3;
Canvas.CopyRect(Canvas.ClipRect, bmp.Canvas, Rect(width, 0, 2*width, height));
end;
finally
bmp.Free;
end;
//初始化控件状态
InitControlState;
edtTitle.Enabled := True;
edtTitle.Text := '结果数据表';
edtTitle.Enabled := False;
//初始化 StringList
slSource:= TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
xlWorkbook := Unassigned;
if not VarIsEmpty(xlApp) then
begin
xlApp.Quit;
xlApp := Unassigned;
end;
FCheck.Free;
FUnCheck.Free;
slSource.Free;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_F1) then
begin
with TForm3.Create(Self) do
begin
ShowModal;
end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//初始化焦点放在打开文件按钮上
bbtnOpen1.SetFocus;
end;
procedure TForm1.sgSheet1Click(Sender: TObject);
begin
if TStringGrid(Sender).Row = 0 then
if TStringGrid(Sender).Cells[TStringGrid(Sender).Col, 0] = 'y' then
TStringGrid(Sender).Cells[TStringGrid(Sender).Col, 0] := 'n'
else TStringGrid(Sender).Cells[TStringGrid(Sender).Col, 0] := 'y';
end;
procedure TForm1.sgSheet1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
//if not (gdFocused in State) then Exit;
with TStringGrid(Sender) do
begin
//去除蓝色的选框
Canvas.Brush.Color := clWindow;
Canvas.FillRect(Rect);
Canvas.Font.Color := clWindowText;
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
//如果选中则画焦点框
if gdFocused in State then Canvas.DrawFocusRect(Rect);
if ARow = 0 then
begin
if Cells[ACol, ARow] = 'y' then
begin
Canvas.Draw(Rect.Left+2, Rect.Top+2, FCheck);
Canvas.TextOut(Rect.Left+3+FCheck.Width, Rect.Top+2, '列输出');
end;
if Cells[ACol, ARow] = 'n' then
begin
Canvas.Draw(Rect.Left+2, Rect.Top+2, FUnCheck);
Canvas.TextOut(Rect.Left+3+FCheck.Width, Rect.Top+2, '列输出');
end;
end;
end;
end;
//选择单元格时,把内容显示出来
procedure TForm1.sgSheet1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
if Arow > 0 then
begin
if chkDispLabel.Checked and (rgDispLabel.ItemIndex = 0) then
begin
edtDispLabelSheet1.ReadOnly := False;
edtDispLabelSheet1.Text := sgSheet1.Cells[ACol, ARow]+ '['+IntToStr(ARow)+']';
edtDispLabelSheet1.ReadOnly := True;
RowDispLabel1 := ARow; //表一的字段所在行
end;
if chkDataRange.Checked then
begin
if rgDataRange.ItemIndex = 0 then
begin
Edit3.ReadOnly := False;
Edit3.Text := sgSheet1.Cells[ACol, ARow] + '['+IntToStr(ARow)+']';
Edit3.ReadOnly := True;
StartRowSheet1 := ARow;//表一的数据起始行
PrimaryColSheet1 := ACol;
end;
if rgDataRange.ItemIndex = 1 then
begin
Edit4.ReadOnly := False;
Edit4.Text := sgSheet1.Cells[ACol, ARow]+ '['+IntToStr(ARow)+']';
Edit4.ReadOnly := True;
EndRowSheet1 := ARow; //表一的数据结尾行
end;
end;
end;
end;
procedure TForm1.sgSheet2SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
if Arow > 0 then
begin
if chkDispLabel.Checked and (rgDispLabel.ItemIndex = 1) then
begin
edtDispLabelSheet2.ReadOnly := False;
edtDispLabelSheet2.Text := sgSheet2.Cells[ACol, ARow]+ '['+IntToStr(ARow)+']';
edtDispLabelSheet2.ReadOnly := True;
RowDispLabel2 := ARow; //表二的字段所在行
end;
if chkDataRange.Checked then
begin
if rgDataRange.ItemIndex = 2 then
begin
Edit5.ReadOnly := False;
Edit5.Text := sgSheet2.Cells[ACol, ARow] + '['+IntToStr(ACol)+','+IntToStr(ARow)+']';
Edit5.ReadOnly := True;
StartRowSheet2 := ARow;//表二的数据起始行
PrimaryColSheet2 := ACol;
end;
if rgDataRange.ItemIndex = 3 then
begin
Edit6.ReadOnly := False;
Edit6.Text := sgSheet2.Cells[ACol, ARow]+ '['+IntToStr(ARow)+']';
Edit6.ReadOnly := True;
EndRowSheet2 := ARow; //表二的数据结尾行
end;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//根据 t 值的不同动起来
case t of
0: sbTip.Panels[2].Alignment := taLeftJustify;
1: sbTip.Panels[2].Alignment := taCenter;
2: sbTip.Panels[2].Alignment := taRightJustify;
end;
inc(t);
if t = 3 then t:= 0;
end;
procedure TForm1.InitControlState;
var
i : integer;
begin
edtFile1.ReadOnly := True;
edtFile2.ReadOnly := True;
for i := 0 to Panel2.ControlCount - 1 do
if Panel2.Controls[i] is TEdit then
TEdit(Panel2.Controls[I]).ReadOnly := True;
rgDispLabel.Enabled := False;
rgDataRange.Enabled := False;
chkDispLabel.Enabled := False;
chkDataRange.Enabled := False;
end;
function TForm1.InvalidCheck : Boolean;
begin
Result := True;
//如果数据区域未设置则提示
if not chkDataRange.Checked then
begin
Result := False;
ShowMessage('请先设置数据区域后再继续!');
Exit;
end
else if (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or
(Edit6.Text='') or (rgDataRange.ItemIndex <> 4) then
begin
Result := False;
ShowMessage('请先把数据区域的各项参数设置完整后再继续!');
Exit;
end;
//字段设置完整性检查
if chkDispLabel.Checked then
begin
if (edtDispLabelSheet1.Text='') or (edtDispLabelSheet2.Text='') or
(rgDispLabel.ItemIndex <> 2) then
begin
Result := False;
ShowMessage('请先把字段区域的各项参数设置完整后再继续!');
Exit;
end;
end;
end;
end.
//主窗体文件
object Form1: TForm1
Left = 0
Top = 0
BorderIcons = [biSystemMenu, biMinimize]
Caption = #36890#29992#28165#20876#27604#23545#21512#24182
ClientHeight = 541
ClientWidth = 676
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poOwnerFormCenter
OnCreate = FormCreate
OnDestroy = FormDestroy
OnKeyDown = FormKeyDown
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Label4: TLabel
Left = 271
Top = 70
Width = 12
Height = 39
Caption = #24037#20316#34920
WordWrap = True
end
object Label5: TLabel
Left = 271
Top = 295
Width = 12
Height = 39
Caption = #24037#20316#34920
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
WordWrap = True
end
object Label1: TLabel
Left = 8
Top = 56
Width = 48
Height = 19
Caption = #34920#19968#65306
Font.Charset = DEFAULT_CHARSET
Font.Color = clMenuHighlight
Font.Height = -16
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label2: TLabel
Left = 5
Top = 289
Width = 48
Height = 19
Caption = #34920#20108#65306
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clMenuHighlight
Font.Height = -16
Font.Name = 'Tahoma'
Font.Style = []
ParentColor = False
ParentFont = False
end
object Label3: TLabel
Left = 13
Top = 91
Width = 48
Height = 13
Caption = #36873#25321#25991#20214
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label6: TLabel
Left = 401
Top = 66
Width = 80
Height = 19
Caption = #21442#25968#35774#32622#65306
Font.Charset = DEFAULT_CHARSET
Font.Color = clMenuHighlight
Font.Height = -16
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label7: TLabel
Left = 8
Top = 320
Width = 48
Height = 13
Caption = #36873#25321#25991#20214
end
object sgSheet1: TStringGrid
Left = 5
Top = 117
Width = 363
Height = 166
DefaultDrawing = False
FixedCols = 0
FixedRows = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing]
TabOrder = 0
OnClick = sgSheet1Click
OnDrawCell = sgSheet1DrawCell
OnKeyDown = FormKeyDown
OnSelectCell = sgSheet1SelectCell
end
object cmbSheet1: TComboBox
Left = 290
Top = 88
Width = 80
Height = 21
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
ParentFont = False
TabOrder = 1
OnKeyDown = FormKeyDown
OnKeyPress = cmbSheet1KeyPress
end
object Panel1: TPanel
Left = 385
Top = 467
Width = 113
Height = 44
TabOrder = 2
object btnGetData: TButton
Left = 1
Top = 1
Width = 111
Height = 41
Caption = 'btnGetData'
TabOrder = 0
OnClick = btnGetDataClick
end
end
object Panel2: TPanel
Left = 385
Top = 91
Width = 283
Height = 369
TabOrder = 3
object chkTitle: TCheckBox
Left = 16
Top = 20
Width = 86
Height = 17
Caption = #36755#20986#34920#26631#39064
TabOrder = 0
OnClick = chkTitleClick
OnKeyDown = FormKeyDown
end
object chkDispLabel: TCheckBox
Left = 16
Top = 62
Width = 97
Height = 17
Caption = #26174#31034#23383#27573#35774#32622
TabOrder = 1
OnClick = chkDispLabelClick
OnKeyDown = FormKeyDown
end
object chkDataRange: TCheckBox
Left = 16
Top = 187
Width = 97
Height = 17
Caption = #25968#25454#21306#22495#35774#32622
TabOrder = 2
OnClick = chkDataRangeClick
OnKeyDown = FormKeyDown
end
object rgDispLabel: TRadioGroup
Left = 16
Top = 81
Width = 170
Height = 81
Items.Strings = (
#34920#19968#23383#27573#25152#22312#34892#65288#20219#24847#21015#65289
#34920#20108#23383#27573#25152#22312#34892#65288#20219#24847#21015#65289
#23383#27573#35774#32622#23436#25104)
TabOrder = 3
end
object edtDispLabelSheet1: TEdit
Left = 187
Top = 97
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 4
OnKeyDown = FormKeyDown
end
object rgDataRange: TRadioGroup
Left = 16
Top = 205
Width = 169
Height = 148
Items.Strings = (
#34920#19968#36215#22987#34892#65288#20851#38190#21015#65289
#34920#19968#32467#23614#34892#65288#20219#24847#21015#65289
#34920#20108#36215#22987#34892#65288#20851#38190#21015#65289
#34920#20108#32467#23614#34892#65288#20219#24847#21015#65289
#25968#25454#21306#22495#35774#32622#23436#25104)
TabOrder = 5
end
object edtDispLabelSheet2: TEdit
Left = 186
Top = 121
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 6
OnKeyDown = FormKeyDown
end
object Edit3: TEdit
Left = 186
Top = 222
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 7
OnKeyDown = FormKeyDown
end
object Edit4: TEdit
Left = 186
Top = 246
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 8
OnKeyDown = FormKeyDown
end
object Edit5: TEdit
Left = 186
Top = 272
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 9
OnKeyDown = FormKeyDown
end
object Edit6: TEdit
Left = 186
Top = 298
Width = 89
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 10
OnKeyDown = FormKeyDown
end
object edtTitle: TEdit
Left = 107
Top = 18
Width = 170
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 11
OnKeyDown = FormKeyDown
end
end
object Panel3: TPanel
Left = 544
Top = 470
Width = 124
Height = 41
TabOrder = 4
object btnOk: TButton
Left = 1
Top = 1
Width = 122
Height = 40
Caption = 'btnOk'
TabOrder = 0
OnClick = btnOkClick
end
end
object Panel4: TPanel
Left = 0
Top = 0
Width = 676
Height = 49
Align = alTop
BevelKind = bkTile
BorderWidth = 2
BorderStyle = bsSingle
Caption = #36890#29992'EXCEL'#28165#20876#25968#25454#27604#23545#21512#24182#31995#32479' V0.1'
Font.Charset = DEFAULT_CHARSET
Font.Color = clTeal
Font.Height = -21
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 5
end
object edtFile1: TEdit
Left = 65
Top = 88
Width = 141
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 6
OnKeyDown = FormKeyDown
end
object bbtnOpen1: TBitBtn
Left = 204
Top = 87
Width = 47
Height = 25
Caption = #25171#24320
Default = True
DoubleBuffered = True
Glyph.Data = {
E6040000424DE604000000000000360000002800000014000000140000000100
180000000000B0040000232E0000232E00000000000000000001FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
E7D852A75D67B3758FC79DB4D9BED5EBDCF0F7F2FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85B68A0080
18007B0C008019008221008E32109B472BAB614DBA7D72CB9A98DBB8BCE8D1DC
F2E6F8FCF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5196572B9142008923
00903100983B009D4000A14500A54A00A74B00A34800A74E00AC5802B0602DBE
7DF0FAF5FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD207B28368F4602913100933500
9B3F00A34900AA5300B25C01B96805BB6E06B66908B96E03B96D00B86BCCF1E2
FFFFFFFFFFFFFFFFFFFFFFFFEBF2EC036B0D2C833616994500993900A44A00AF
5900B96803C3790AC47E0DC47F10C48012C48013C6840BC784A9ECD6FFFFFFFF
FFFFFFFFFFFFFFFFD2E2D30062001976202E9D54009A3B03A95015B35D1EC06F
12CB8614D59C17D09517CE911DD39B1ED6A020DAA689EDD3FFFFFFFFFFFFFFFF
FFFFFFFFB4D0B60065000574103C9C57009B3E05A95121B46130C0752DCD8E17
D8A222DEAE26DEAD2DE3B632E8C046F0CE82F9E4FDFEFEFFFFFFFFFFFFFFFFFF
93BE97006700006F05439A551A9A50009A4108A65410AD5E16B9760DCF9624E1
B131E8BF3CEECB42F4D462FBE37CFEEDECFCFAFFFFFFFFFFFFFFFFFF70AA7600
650000730D0D892E59B48066A76C87AD788AA86D76C49750D1AA1EDAAB30EBC1
3FF1CE47F7D871FEEA78FFF0D0FDF7FFFFFFFFFFFFFFFFFF4F96550164000473
10017E1B049032717719DD8D3DD57C107FB8775CCA927CD5B01FDEB431E4BF3D
EACB60F1DB61F5E0AFF9EEFFFFFFFFFFFFFFFFFF30863A726000A4711FA77F2E
B08832B88531CA9A44C68E16CFA454BF8B30D5A56693CFB466DBBF78DFC8B6ED
E3C8F6EEEBFDFAFFFFFFFFFFFFF2F7F71C81239E6D04CD903FC68C18D6A324DA
AE2BD2A321C99213CE8A0EC7800BBC5B00A2B07A43FEE055E3BFFFFCFDFFFFFF
FFFFFFFFFFFFFFFFFFDCEAE10A760F92760ECD8C3DBF8114CB9C28D5AE37DCB3
2ADDB52ACBBF58B2AF59ACA5607CDFBB2BF7D559DEBDFFFEFEFFFFFFFFFFFFFF
FFFFFFFFFFC5DAC7006D020A780F3A934030A2532CAA5AB3913EE0AA3DD4B43E
2ED8AC0DD3A215D5AA17CFA40CC09281DAC1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFA2C4A400630000710B00760F00801E00811EB68220D5992DB8A33C18B0752E
B37E60C7A28DD8C0B6E7D8F6FCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86AF88
0045000058000D6A182C88435D974FC28724B27408C29E51EEF8F4FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3EAE3AAC2AAC7
D8C7EAF0EAFFFFFFFFEAD5C18B2BA66D1BD0B286FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFEFDF7F1E7F8F7F5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF}
ModalResult = 6
ParentDoubleBuffered = False
Spacing = 1
TabOrder = 7
OnClick = bbtnOpen1Click
OnKeyDown = FormKeyDown
end
object cmbSheet2: TComboBox
Left = 290
Top = 314
Width = 82
Height = 21
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
ParentFont = False
TabOrder = 8
OnKeyDown = FormKeyDown
OnKeyPress = cmbSheet1KeyPress
end
object edtFile2: TEdit
Left = 65
Top = 314
Width = 141
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 9
end
object bbtnOpen2: TBitBtn
Left = 204
Top = 312
Width = 47
Height = 25
Margins.Left = 1
Margins.Top = 1
Margins.Right = 1
Margins.Bottom = 1
Caption = #25171#24320
DoubleBuffered = True
Glyph.Data = {
E6040000424DE604000000000000360000002800000014000000140000000100
180000000000B0040000232E0000232E00000000000000000001FFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
E7D852A75D67B3758FC79DB4D9BED5EBDCF0F7F2FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85B68A0080
18007B0C008019008221008E32109B472BAB614DBA7D72CB9A98DBB8BCE8D1DC
F2E6F8FCF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5196572B9142008923
00903100983B009D4000A14500A54A00A74B00A34800A74E00AC5802B0602DBE
7DF0FAF5FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD207B28368F4602913100933500
9B3F00A34900AA5300B25C01B96805BB6E06B66908B96E03B96D00B86BCCF1E2
FFFFFFFFFFFFFFFFFFFFFFFFEBF2EC036B0D2C833616994500993900A44A00AF
5900B96803C3790AC47E0DC47F10C48012C48013C6840BC784A9ECD6FFFFFFFF
FFFFFFFFFFFFFFFFD2E2D30062001976202E9D54009A3B03A95015B35D1EC06F
12CB8614D59C17D09517CE911DD39B1ED6A020DAA689EDD3FFFFFFFFFFFFFFFF
FFFFFFFFB4D0B60065000574103C9C57009B3E05A95121B46130C0752DCD8E17
D8A222DEAE26DEAD2DE3B632E8C046F0CE82F9E4FDFEFEFFFFFFFFFFFFFFFFFF
93BE97006700006F05439A551A9A50009A4108A65410AD5E16B9760DCF9624E1
B131E8BF3CEECB42F4D462FBE37CFEEDECFCFAFFFFFFFFFFFFFFFFFF70AA7600
650000730D0D892E59B48066A76C87AD788AA86D76C49750D1AA1EDAAB30EBC1
3FF1CE47F7D871FEEA78FFF0D0FDF7FFFFFFFFFFFFFFFFFF4F96550164000473
10017E1B049032717719DD8D3DD57C107FB8775CCA927CD5B01FDEB431E4BF3D
EACB60F1DB61F5E0AFF9EEFFFFFFFFFFFFFFFFFF30863A726000A4711FA77F2E
B08832B88531CA9A44C68E16CFA454BF8B30D5A56693CFB466DBBF78DFC8B6ED
E3C8F6EEEBFDFAFFFFFFFFFFFFF2F7F71C81239E6D04CD903FC68C18D6A324DA
AE2BD2A321C99213CE8A0EC7800BBC5B00A2B07A43FEE055E3BFFFFCFDFFFFFF
FFFFFFFFFFFFFFFFFFDCEAE10A760F92760ECD8C3DBF8114CB9C28D5AE37DCB3
2ADDB52ACBBF58B2AF59ACA5607CDFBB2BF7D559DEBDFFFEFEFFFFFFFFFFFFFF
FFFFFFFFFFC5DAC7006D020A780F3A934030A2532CAA5AB3913EE0AA3DD4B43E
2ED8AC0DD3A215D5AA17CFA40CC09281DAC1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFA2C4A400630000710B00760F00801E00811EB68220D5992DB8A33C18B0752E
B37E60C7A28DD8C0B6E7D8F6FCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86AF88
0045000058000D6A182C88435D974FC28724B27408C29E51EEF8F4FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3EAE3AAC2AAC7
D8C7EAF0EAFFFFFFFFEAD5C18B2BA66D1BD0B286FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFEFDF7F1E7F8F7F5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF}
ParentDoubleBuffered = False
TabOrder = 10
OnClick = bbtnOpen2Click
OnKeyDown = FormKeyDown
end
object sgSheet2: TStringGrid
Left = 8
Top = 339
Width = 363
Height = 166
DefaultDrawing = False
FixedCols = 0
FixedRows = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing]
TabOrder = 11
OnClick = sgSheet1Click
OnDrawCell = sgSheet1DrawCell
OnKeyDown = FormKeyDown
OnSelectCell = sgSheet2SelectCell
end
object sbTip: TStatusBar
Left = 0
Top = 517
Width = 676
Height = 24
Color = clMoneyGreen
Panels = <
item
Width = 150
end
item
Alignment = taCenter
BiDiMode = bdLeftToRight
ParentBiDiMode = False
Text = ' CopyRight By ZongQingHong QQ:175624411'
Width = 300
end
item
Alignment = taCenter
Text = #25353' F1 '#26597#30475#20351#29992#24110#21161
Width = 50
end>
SizeGrip = False
end
object odFile1: TOpenDialog
Left = 176
Top = 152
end
object odFile2: TOpenDialog
Left = 200
Top = 384
end
object Timer1: TTimer
OnTimer = Timer1Timer
Left = 528
Top = 56
end
end
//格式设置单元文件
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst;
type
TForm2 = class(TForm)
chklist: TCheckListBox;
cmbStyle: TComboBox;
btnSet: TButton;
Label1: TLabel;
Label2: TLabel;
procedure chklistClickCheck(Sender: TObject);
procedure cmbStyleChange(Sender: TObject);
procedure btnSetClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure chklistClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
//Constructor Create(AOwner: TComponent; sFileName: string); reintroduce;
Constructor Create(AOwner: TComponent; AxlBook: Variant); reintroduce;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses ComObj;
var
arrCheck, arrStyle: array of Byte; //复选框状态和设置风格数据
tmpxlBook: Variant;
rCount, cCount: Cardinal;
procedure TForm2.btnSetClick(Sender: TObject);
var
i, j : integer;
begin
for I := 0 to chkList.Items.Count - 1 do
begin
//如果选中了列,且设置格式为文本
if (arrCheck[i] = 1) and (arrStyle[i] = 1) then
begin
for j := 2 to rCount do
tmpxlBook.ActiveSheet.Cells[j, i+1].NumberFormatLocal := '000000';
end;
end;
ShowMessage('格式设置完成');
ModalResult := 1;
end;
procedure TForm2.chklistClick(Sender: TObject);
begin
cmbStyle.ItemIndex := arrStyle[chkList.ItemIndex];
end;
procedure TForm2.chklistClickCheck(Sender: TObject);
begin
arrCheck[chkList.ItemIndex] := Byte(chkList.State[chkList.ItemIndex]);
end;
procedure TForm2.cmbStyleChange(Sender: TObject);
begin
if arrCheck[chkList.ItemIndex] = 1 then
arrStyle[chkList.ItemIndex] := cmbStyle.ItemIndex;
end;
Constructor TForm2.Create(AOwner: TComponent; AxlBook: Variant);
var
i: integer;
begin
inherited Create(AOwner);
tmpxlBook := AxlBook;
cCount := tmpxlBook.ActiveSheet.UsedRange.Columns.Count;
rCount := tmpxlBook.ActiveSheet.UsedRange.Rows.Count;
//chkList.Clear;
for I := 0 to cCount - 1 do
begin
chkList.Items.Add(tmpxlBook.ActiveSheet.Cells[2,I+1].Value);
end;
SetLength(arrCheck, cCount);
SetLength(arrStyle, cCount);
for i := Low(arrCheck) to High(arrCheck) do
arrCheck[i] := Byte(chkList.State[i]);
for i := Low(arrStyle) to High(arrStyle) do
arrStyle[i] := 0;
btnSet.Caption := '设置';
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
//tmpxlBook.Close;
tmpxlBook := UnAssigned;
end;
end.
//格式设置窗体文件
object Form2: TForm2
Left = 0
Top = 0
BorderIcons = [biSystemMenu, biMinimize]
Caption = #26684#24335#35774#32622
ClientHeight = 243
ClientWidth = 346
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 11
Width = 117
Height = 13
Caption = #36873#25321#35201#35774#32622#30340#23383#27573#21015
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object Label2: TLabel
Left = 184
Top = 13
Width = 52
Height = 13
Caption = #36873#25321#26684#24335
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
end
object chklist: TCheckListBox
Left = 8
Top = 32
Width = 161
Height = 203
OnClickCheck = chklistClickCheck
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
ItemHeight = 13
TabOrder = 0
OnClick = chklistClick
end
object cmbStyle: TComboBox
Left = 184
Top = 32
Width = 145
Height = 21
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
TabOrder = 1
Text = #40664#35748
OnChange = cmbStyleChange
Items.Strings = (
#40664#35748
#25991#26412)
end
object btnSet: TButton
Left = 216
Top = 184
Width = 89
Height = 51
Caption = 'btnSet'
TabOrder = 2
OnClick = btnSetClick
end
end
//使用帮助单元文件
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm3 = class(TForm)
lbHelp: TListBox;
procedure lbHelpKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.lbHelpKeyPress(Sender: TObject; var Key: Char);
begin
key := #0;
end;
end.
//使用帮助窗体文件
object Form3: TForm3
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
Caption = #36719#20214#20351#29992#24110#21161
ClientHeight = 347
ClientWidth = 537
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poOwnerFormCenter
PixelsPerInch = 96
TextHeight = 13
object lbHelp: TListBox
Left = 0
Top = 0
Width = 537
Height = 340
BevelKind = bkFlat
Color = clSkyBlue
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -16
Font.Name = #21326#25991#26999#20307
Font.Style = []
ImeName = #20013#25991' ('#31616#20307') - '#19975#33021#20116#31508#20869#32622#36755#20837#27861
IntegralHeight = True
Items.Strings = (
' '#20449#24687#21270#26102#20195#65292#21150#20844#30005#23376#21270#24050#25104#20102#27599#20010#37096#38376#21333#20301#19981#21487#25110#32570#30340#32452#25104#37096#20998#65292
#20854#20013#20063#20813#19981#20102#35201#32463#24120#20351#29992#24494#36719#30340'EXCEL'#30005#23376#34920#26684#65292#36890#36807#23545#30005#23376#34920#26684#30340#28789
#27963#36816#29992#65292#26497#22823#26041#20415#21644#25552#39640#20102#21150#20844#25928#29575#12290
' '#22312#20855#20307#24037#20316#20013#65292#32463#24120#20250#30896#21040#20004#24352#30005#23376#34920#26684#30340#27604#23545#25110#21512#24182#38382#39064#12290#21363#20320#25152
#38656#35201#30340#20449#24687#24448#24448#26159#22312#20004#24352#19981#21516#30340#34920#26684#20013#12290#22914#26524#35201#25163#24037#25226#20004#24352#34920#26684#30340#20869#23481
#26681#25454#26576#20010#20851#38190#23383#27573#27604#23545#25110#21512#24182#22312#19968#36215#65292#23558#20250#28040#32791#24744#22823#37327#23453#36149#30340#26102#38388#21644#31934
#21147#12290#20026#27492#65292#20316#32773#19987#38376#32534#20889#20102#19968#20010#36890#29992#30340'EXCEL'#28165#20876#27604#23545#21512#24182#36719#20214#65292#26469#25552
#39640#25928#29575#65292#24182#25226#23427#20998#20139#32473#27599#19968#20301#38656#35201#30340#26379#21451#12290#22823#23478#22914#26524#22312#20351#29992#20013#21457#29616#38382#39064
#25110#26377#26356#22909#30340#24314#35758#21487#20197#32852#31995'QQ'#65306'175624411'#65292'EMAIL'#65306'zjdyzqh@163.com'#65292
#25105#23558#23613#21147#20104#20197#21560#32435#25913#21892#35813#36719#20214#31995#32479#12290
#25805#20316#20351#29992#35828#26126#65306
' '#27493#39588'1'#65306#22312#34920#19968#65292#36873#25321#35201#25805#20316#30340'EXCEL'#25991#20214#65292#21518#36873#25321#20854#20013#30340#19968#24352#30005#23376#34920
#20316#20026#34920#19968#12290
' '#27493#39588'2'#65306#22312#34920#20108#65292#36873#25321#35201#25805#20316#30340'EXCEL'#25991#20214#65292#21518#20877#36873#25321#30456#24212#30340#30005#23376#34920
#20316#20026#34920#20108#12290
' '#27493#39588'3'#65306#23436#25104'1'#12289'2'#27493#21518#65292#28857#8220#33719#21462#25968#25454#8221#25353#38062#65292#21462#24471#20004#24352#30005#23376#34920#30340#25968#25454#12290
' '#27493#39588'4'#65306#36827#34892#21442#25968#35774#32622#65288#24517#39035#35774#32622#65289
' '#65288'1'#65289#33509#35201#35774#32622#36755#20986#30005#23376#34920#30340#26631#39064#65292#21017#21246#36873#8220#26631#39064#8221#22797#36873#26694#65292#21363#21487#36755#20837#12290
' '#65288'2'#65289#33509#35201#36755#20986#23383#27573#26174#31034#26631#31614#65292#21017#21246#36873#8220#23383#27573#26631#31614#8221#22797#36873#26694#21518#65292#36873#20013
#8220#34920#19968' '#30340#23383#27573#21517#25152#22312#34892#65288#20219#24847#21015#65289#8221#36873#39033#65292#20877#28857#30005#23376#34920#19968#30340#23383#27573#25152#22312#34892#12290
' '#36873#20013#8220#34920#20108#30340#23383#27573#21517#25152#22312#34892#65288#20219#24847#21015#65289#8221#36873#39033#65292#20877#28857#34920#20108#30340#23383#27573#25152#22312#34892#12290
' '#35774#32622#23436#25104#21518#65292#19968#23450#35201#36873#20013#8220#35774#32622#23436#25104#8221#36873#39033#12290
' '#65288'3'#65289#21246#36873#8220#25968#25454#21306#22495#35774#32622#8221#22797#36873#26694#21518#65292#36873#20013#8220#34920#19968#30340#25968#25454#36215#22987#34892
#65288#20851#38190#21015#65289#8221' '#36873#39033#65292#20877#28857#20987#34920#19968#20013#20851#38190#21015#30340#31532#19968#34892#25968#25454#65307#20854#20182#36873#39033#35774#32622
#21516#12290#35774#32622#23436#25104#21518#65292#19968#23450#35201#36873#20013#8220#25968#25454#35774#32622#23436#25104#8221#36873#39033#12290
' '#27493#39588'5'#65306
' '#65288'1'#65289#28857#20987#8220#27604#23545#21512#24182#8221#25353#38062#65292#25353#25552#31034#36755#20837#25991#20214#21517#21518#20445#23384#12290
' '#65288'2'#65289#25552#31034#26159#21542#35201#35774#32622#29983#25104#30340#32467#26524#34920#30340#26684#24335#12290#65371#28857#20987#8220#26159#8221#65292#26174#31034#35774#32622
#31383#21475#12290' '#22914#26524#26377#23383#27573#26174#31034#21517#65292#20250#26174#31034#25152#26377#30340#23383#27573#65292#21487#26681#25454#38656#35201#35774#32622#21508#23383#27573
#30340#25991#26412#23646#24615#65288#20165#25552#20379#26368#24120#29992#30340#25991#26412#26684#24335#26174#31034#25968#23383#21151#33021#65289#65307#22914#26524#26080#23383#27573#26174
#31034#21517#65292#21017#26174#31034#31532#19968#34892#30340#21508#21015#25968#25454#20869#23481#65292#25805#20316#21516#21069#12290#65373)
ParentFont = False
TabOrder = 0
OnKeyPress = lbHelpKeyPress
end
end