论文导读::对于EXCEL应用软件的使用,我们一般仅仅是独立于其环境下来使用,或是做个报表,或是进行统计等工作,但如果将其与一些编程语言结合起来使用会给我们的工作带来很大的方便。本文介绍了作者如何借助Delphi7开发语言+EXCEL应用软件实现信封套打的方法,值得读者借鉴。
关键词:Delphi7,EXCEL,汉字旋转,数据库,信封套打
通过各种编程工具将数据库中的信息通过编制程序输出,是比较容易实现,即乎所有的语言开发工具中都提供报表控件,并且这些控件中还具有对输出的汉字信息进行字体、字型和字号修饰的功能,但对于汉字信息的旋转控制却没有相关的修饰,而且对于汉字的旋转在某些时候是必须的也是非常有实际意义的,作者在工作过程中就碰到了这样情况。
作者是地方高校的计算机专业教师,今年由于我校的招生规模扩大和招生政策的相应调整,需要将录取通知书在很短的时间内发送到填报我校志愿且达线的中考、高考的考生手中,在时间紧和考生记录量很大的情况下完成这一任务,如果还采用以前的手工抄写信封的话计算机毕业论文,肯定会存在许多问题:一是不规范不正规;二是工作时间长,既浪费时间又浪费人力、物力和财力;三是很容易出现错误的地方。为此,本人便想利用编程实现信封套打的自动办。
鉴于我校所有的激光打印机均为HP1010和HP1020系列的,最大出型号是A4(宽度最大也只在211厘米左右),而我校的信封又均为22-E156-7号大型信封(247厘米×148厘米),在这样的机型下要想把信封按【图1】中的“邮上”样式放在进纸盒里是完全不可能的(因为247厘米>211厘米),所以,只有把信封按【图1】的“邮左”和“邮右”两种方式放在打印机的进纸盒里。

【图1】
作者在网上和书上查了很多的相关资料,都没有找到针对汉字旋转的技术文章毕业论文格式范文。根据平时积累的经验,本人想到了EXCEL这个应用软件,在它里面完全可以对任意一个单元格的信息进行任意的旋转:菜单[格式]----[单元格]---[对齐]标签---[方向]来进行设置,而且EXCEL与数据库之间也有一定的对应关系和相互处理起来比较方便。在这样的启发下,思路很快出来:
①使用Delphi7开发工具将DBF中的一个考生信息输出到EXCEL对应的单元格中;
②通过使用者的选择打印样式,对单元格进行旋转控制和页面设置,调整成合适的套打格式(也可
通过程序当中提供的存放单元格位置来设置);
③通过编程将当前工作表中的信息打印输出;
④重复①--③步。
但在具体实施过程中,本人并没有像上面的步骤进行,而是将上面的步骤作了顺序的调整,将第②步调到最上面,即先做好第②然后再依次做剩下两步。可能读者不知道这是为什么,也觉得有点行不通。作者是这样考虑的,这样可以省去一些程序代码的繁烦和减少编程难度。下面是具体的实现过程:
1、通过EXCEL制作三个模板文件:“邮左.xls”、“邮上.xls”和“邮右.xls”:按照EXCEL中对单元格的旋转修饰和页面设置,调试好套打样式计算机毕业论文,然后在信封上试打,如果套打不成功,即相关信息没有打在对应的位置,就要再次设置调试,直到套打成功。
2、通过配置ODBC,将下发的数据库文件配置到以“sqdd”为名称的数据源中。
3、设计软件界面,放置需要的有关控件并进行相应的参数设置,编写相关过程代码。
编程思路:在微软的Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,我们可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。另一方面,该软件中的宏能以VBA代码的形式记录下我们的操作过程。因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到我们的软件中毕业论文格式范文。但由于VBA也存在一个缺点:它必须有MS OFFICE作平台,在哪里编写,必须在哪里执行。例如在EXCEL下编写的一段VBA代码,则它只有在EXCEL下才能运行。因此,笔者就采用了把VBA代码嵌入到Delphi7中,从而实现相应的功能。
本程序中所使用的主要控件及相关设置如下表。
控件名称
|
属性
|
值
|
|
控件名称
|
属性
|
值
|
Table1
|
DatabaseName
|
sqdd
|
Query1
|
DatabaseName
|
sqdd
|
TableName
|
2006lqxx
|
SQL
|
select distinct xxmc from 2006lqxx
|
Active
|
True
|
Active
|
True
|
DataSource1
|
DataSet
|
Table1
|
DataSource2
|
DataSet
|
Query1
|
设计出的界面如【图2】所示:
【图2】
由于篇幅有限,下面仅列出主要的【开始打印,请稍候…】模块的代码:
procedure TForm1.Button1Click(Sender:TObject);
var
ExcelApp,WorkBook:Variant;//声明为OLE Automation对象
xlsFile:string;
begin
if radiobutton1.Checked then
xlsFile:='d:delphi_learnprint邮上.xls'
else
ifradiobutton2.Checked then
xlsFile:='d:delphi_learnprint邮左.xls'
else
if radiobutton3.Checked then
xlsFile:='d:delphi_learnprint邮右.xls';
//创建OLE对象Excel Application 与WorkBook
ExcelApp:=CreateOleObject('Excel.Application'); WorkBook:=CreateOleObject('Excel.sheet');
WorkBook:=ExcelApp.workbooks.open(xlsFile);
//将数据表中的记录逐一送到EXCEL的工作表中计算机毕业论文,然后打印输出,循环进行
while not Table1.Eof do
begin
ExcelApp.cells(strtoint(edit2.Text),strtoint(edit3.Text)):=
Table1.Fieldbyname('yzbm').asstring;
ExcelApp.cells(strtoint(edit4.Text),strtoint(edit5.Text)):=
Table1.Fieldbyname('lqtzsyjdz').asstring;
ExcelApp.cells(strtoint(edit6.Text),strtoint(edit7.Text)):=
Table1.Fieldbyname('xm').asstring+'(收)';
table1.Next;
ExcelApp.ActiveSheet.PrintOut;
end;
WorkBook.save;
WorkBook.close;
ExcelApp.quit;
ExcelApp:=Unassigned;//释放VARIANT变量
end;
本应用程序由于考虑到时间问题,所以在功能上没有进行深入的分析,而仅是满足信封有打印功能,当然,如果读者感兴趣的话,还可以进行一些深入的分析和设计,充分利用Delphi7对EXCEL的编程控制做出更加灵活、更加人性化、更有价值的应用软件。
本文是笔者借助Delphi7开发工具来对Excel的进行编程控制并结合Excel应用软件自身提供的功能来解决在工作过程中所遇到问题,涉及到的技术难度不大,编程量也不多,主要目的是让作者在今后的工作过程中,当需要通过编程来解决某一问题时要掌握这种思路和方法,不要仅局限于某种开发语言的本身。
参考文献:
[1]耿宏远等.Delphi6组件大全(软件工程师丛书)[M].电子工业出版社,2002.
[2]程旭松等.80例上手Delphi7编程[M].山东电子音像出版社,2004.
[3]网站:http://www.xliao.com/html/kaifayuyan/delphi/feijishuqu/list_1.html
|