delphi7如何读取excel文件.docx
- 文档编号:3353974
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:8
- 大小:21.23KB
delphi7如何读取excel文件.docx
《delphi7如何读取excel文件.docx》由会员分享,可在线阅读,更多相关《delphi7如何读取excel文件.docx(8页珍藏版)》请在冰豆网上搜索。
delphi7如何读取excel文件
delphi7如何读取excel文件
我有一个excel文件,第一行是某项目预算表,第二行有分公司、项目名,第三行是材料、数量、单价、金额等列标题,往下就是具体的数据,请问我怎么读取哪些具体数据呀,我以前见过一个软件,可以在表格中打开excel文件,然后可以删除excel的前后几行,只留下规则的中间部分(实际的excel文件中这几行并没删除),不知道怎么可以实现这样的功能
用ole可以解决
用ole读excel:
会读了后,你自己处理一下要读的数据就行了
var
I,J:
Integer;
MaxRow,MaxCol:
Integer;
List,Strs:
TStringList;
ExcelApp,Sheet:
Variant;
OldTime:
TDateTime;
begin
List:
=TStringList.Create;
Strs:
=TStringList.Create;
//创建一个excel的ole对象
ExcelApp:
=CreateOleObject("Excel.Application");
try
//打开一个excel文件
ExcelApp.WorkBooks.Open(Edit1.Text);List.BeginUpdate;
try
//设置工作区
ExcelApp.WorkSheets[1].Activate;Sheet:
=ExcelApp.WorkSheets[1];//有数据的区域的行数和列数
MaxRow:
=Sheet.UsedRange.Rows.count-1;MaxCol:
=Sheet.UsedRange.Columns.count;forI:
=2toMaxRowdo
begin
Strs.Clear;
forJ:
=1toMaxColdo
begin
//获得excel的数据第i行,第j列单元格内的数据
Strs.Add(Sheet.Cells[i,j].Value);end;
List.Add(Strs.CommaText);end;
finally
//关闭工作区
ExcelApp.WorkBooks.Close;List.EndUpdate;
end;
finally
//释放ole对象
ExcelApp.Quit;
List.Free;
Strs.Free;
end;
end;
用delphi提供的excelapplication读,在servers选项卡里var
I,J:
Integer;
MaxRow,MaxCol:
Integer;List,Strs:
TStringList;sheet:
ExcelWorksheet;
OldTime:
TDateTime;
XlsCell:
string;
begin
List:
=TStringList.Create;Strs:
=TStringList.Create;//连接
ExcelApplication1.Connect;try
ExcelApplication1.Visible[1]:
=False;
//打开一个excel文件,文件名是edit.textExcelApplication1.Workbooks.Open(Edit1.Text,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
List.BeginUpdate;
try
//ExcelApplication1.WorkSheets[1].Activate;Sheet:
=ExcelApplication1.WorkSheets[1]asExcelWorksheet;
MaxRow:
=Sheet.UsedRange[1].Rows.count-1;MaxCol:
=Sheet.UsedRange[1].Columns.count;forI:
=2toMaxRowdo
begin
Strs.Clear;
forJ:
=1toMaxColdo
begin
XlsCell:
=ColRowNumToStr(J,I);Strs.Add(Sheet.Range[XlsCell,XlsCell].Text);end;
List.Add(Strs.CommaText);
end;
finally
ExcelApplication1.WorkBooks.Close
(1);List.EndUpdate;
end;
finally
ExcelApplication1.Disconnect;
List.Free;
Strs.Free;
end;
end;
还有一些第三方的表格控件可以直接读取excel的数据的
网上搜下,这方面东西太多了
Delphi中使用ADO连接Excel有感
Bypanther666
今天在Delphi中使用ADO连接Excel(以前在一本书看过,复习一下-_-!
!
),有所收获,不敢独享。
第一部分:
1.设置ADOConnection的ConnectionString属性的OLEDB的提供者要选择MicrosoftJet4.0OLEDBProvider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件),按"下一步"按钮
2.选择数据库名称。
注意:
Excel的扩展名是*.xls,而默认文件类型是MicrosoftAccess数据库(*.mdb),我们就选择"全部文件(*.*)"吧,接着选择我们要连接的Excel文件咯~~如果在当前路径,就直接填2007.xls。
这时先别慌按"测试连接"按钮,不然会出现错误对话框的。
可以试试看,了解一下^_^
3.在"所有"选项卡中找到"ExtendedProperties",双击它或者按"编辑值"按钮,设置ExtendedProperties为"Excel8.0"。
4.我们返回"连接"选项卡,按"测试连接"按钮。
测试连接成功~~~^_^
最后,设置完成后的ConnectionString中的各项参数为:
Provider=Microsoft.Jet.OLEDB.4.0
DataSource=2007.xls//因为在当前路径
ExtendedProperties=Excel8.0
PersistSecurityInfo=False
第二部分:
接着就用ADOTable,ADODataSet和ADOQuery连接到刚才的ADOConnection,当然你可以直接设置ADOTable,ADODataSet或ADOQuery的ConnectionString属性。
1.ADOTable设置:
a.ADOTable的TableName属性值:
系统自动生成Excel的Sheet1$,Sheet2$和Sheet3$。
直接Active设置成true,系统会报告SQL语句格式错误等信息。
b.找到TableDirect属性,设置为True。
因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。
接着将Active设置成true。
成功了~~^_^
c.可以不使用TableDirect属性,将TableName属性中的Sheet1$,Sheet2$和Sheet3$分别改成[Sheet1$],[Sheet2$]和[Sheet3$]。
对,就是加"[]"就行了。
2.ADODataSet设置:
a.只需要将CommandType属性设置为cmdTableDirect,选择工作表,Active设置成true就成功了。
b.也可以将CommandType属性设置为cmdTable,将CommandText属性中改成[Sheet1$],[Sheet2$]和[Sheet3$]。
3.ADOQuery设置:
SQL属性如下:
select*from[sheet1$]
总结:
复习以前所学的,尝试新的连接方法,有益于加深记忆。
我发现工作表名后面都要多加一个$符号,还有就是打开ADOTable,ADODataSet或者ADOQuery以后,它们的CursorType自动变成ctStatic。
应用环境:
Delphi7.0,Win2003企业版
Delphi控制Excel自动生成报表
引言
数据报表作为企事业单位上报和下达的重要信息载体,随着信息化建设的不断推进,在实际的工作中得到了前所未有的应用。
因此,数据报表已经成为管理信息系统中重要的一项功能,并且,由于数据的多样性和统计信息的增加,数据报表的系统实现变得越来越复杂。
Delphi是一个高效的可视化数据库管理信息系统开发工具,.但是Delphi开发环境中提供的报表控件在制作复杂报表时显得不够理想,不管是以前版本提供的QuickReport控件组,还是Delphi7提供的Rave控件组,都不能让用户对生成的报表进行改动,且程序控制很难实现。
Excel作为现代办公常用的电子表格制作工具,以它的易操作性和实用性,得到了各行业办公人员的青睐。
本文根据实际应用实践,介绍利用Delphi编程控制Excel生成报表的各种方法。
Delphi控制Excel的方法
1创建Excel文件
要在Delphi中控制Excel,就必须用到OLE自动化。
现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-placeactivation)。
创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:
functioncreateExcel:
variant;
var
v:
variant;
sheet:
variant;
begin
v:
=createoleobject('Excel.Application');//创建OLE对象
v.visible:
=true;
v.workbooks.add(-4167);//添加工作表
v.workbooks[1].sheets[1].name:
='test';
sheet:
=v.workbooks[1].sheets['test'];
Result:
=v;
end;
2数据表格控制
Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。
当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。
(1)数据的导入(importData)
procedureimportData;
var
I,j:
integer;
v:
variant;
begin
v:
=createExcel;//创建Excel文件test
forI:
=0tomaxcolumndo
begin
forj:
=0tomaxrowdo
v.workbooks[1].sheets[1].cells[I,j]:
=I*j;//导入数据end;
end;
(2)单元格的合并、边框的控制(lineStylecontrol)
单元格的合并,是在选定合并范围的情况下进行的。
边框控制可以操作边框线条的是否显示。
其他方式的控制,可以仿照下面过程进行。
procedurelineStylecontrol;
var
v,sheet,range:
variant;
begin
v:
=createExecl;
sheet:
=v.workbooks[1].sheets[1];
range:
=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//选定表格
range.select;
range.merge;//合并单元格
range.borders.linestyle:
=xlcontinuous;//置边框线可见range.font.size:
=9;//改变表格内文本字体大小end;
(3)表格的复制与粘贴(copyandPaste)procedurecopyandPaste;
var
v,sheet,range:
variant;
begin
v:
=createExecl;
sheet:
=v.workbooks[1].sheets[1];
range:
=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];range.select;//选定要复制的表格
range.copy;//复制选定的表格
sheet.range[sheet.cells[40,1],sheet.cells[40,1]].select;//选择要粘贴的位置
sheet.paste;//粘贴表格
end;
3文件的保存
文件保存是在创建文件的基础上进行的,过程saveFile说明了文件保存过程中应该注意的问题:
proceduresaveFile;
var
sheet,v:
variant;
begin
v:
=createExcel;
ifsavedialog.executethen
begin
v.workbooks[1].saveas(savedialog.FileName);//保存文件
v.workbooks[1].close;//关闭工作表
v.quit;//关闭Excel
v:
=unassigned;
end;
end;
报表制作应注意的问题
(1)报表格式的选择
报表格式的选择对信息系统报表的实现方法起着决定性的影响。
如果在报表的格式要求比较严格的情况下,应当采用模板的方式产生报表。
由于模板在数据导入之前就已经按照标准制定好,所以只要在程序中控制模板的复制与粘贴,然后编程实现数据输入指定位置即可。
而对于报表格式多变的情况,由于数据的不同,需要合并单元格或者控制边框,可以直接在程序中自动控制报表的生成。
(2)打印
对于Excel报表的打印,最好不要在程序中进行控制,因为报表往往需要签字或者进行审查,有许多报表都包含平面图或示意图,为了有效的控制打印质量,最好通过程序控制输出或显示Excel文件,以便修改;另一个重要的原因是Excel具有强大的排版功能,而这正是选择Excel导出报表的重要原因。
(3)报表时间和表头
报表时间要有用户可以控制的输出。
表头的制作要在事先做好格式,控制输出时,只改动那些诸如上报单位、下达单位、负责人等数据,这样既保证了系统的效率,又不失其实用性。
结论
用Delphi控制Excel来完成数据库管理信息系统的数据报表功能,是Delphi制作复杂报表的最佳选择,因为Delphi不但能控制数据的导出与导入,而且可以完成当前Excel应用中的大部分功能。
如果深入研究VisualBasicforApplication(VBA)就可以制作出符合实际需要的各种Delphi控制Excel的控件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- delphi7 如何 读取 excel 文件