【求助】关于delphi 中对Excel操作的问题
如图,我要做一个把dbgrid中的显示的数据导出到excel,请问要怎么做?看了网上很多的文章,都不行,或者请介绍几款好用的第三方控件也行,望各位指导。希望详细一点,我比...
如图,我要做一个把dbgrid中的显示的数据导出到excel,请问要怎么做?看了网上很多的文章,都不行,
或者请介绍几款好用的第三方控件也行,望各位指导。希望详细一点,我比较菜,呵呵
就没有介绍一下,第三方控件的吗? 展开
或者请介绍几款好用的第三方控件也行,望各位指导。希望详细一点,我比较菜,呵呵
就没有介绍一下,第三方控件的吗? 展开
4个回答
展开全部
在上面窗口中依次添加 3个Servers组件组中 TExcelApplication1、TExcelWorksheet1、TExcelWorkbook控件------interface接口部分引用
......................................................................................
uses
OleServer, ComObj, ShellAPI, ExcelWorksheet1, ExcelXP, ExcelApplication1;
......................................................................................
实现代码如下:
procedure TForm1.btnOutputClick(Sender: TObject);
var
i: Integer;
New_worksheet: _Worksheet;
//filename1: string;
begin
try
excelapplication1.Connect;
except
//application.MessageBox('默认路径下''D:\Excel\''找不到''库单信息.xls'',请确认该文件是否存在!','',16);
end;
if DBgrid1.DataSource.DataSet.IsEmpty then
Exit
else
excelapplication1.Visible[0]:=true;
//创建一个Workbook,并添加一张新Worksheet
excelworkbook1.ConnectTo(excelapplication1.Workbooks.Add(EmptyParam,0));
New_worksheet :=excelworkbook1.Worksheets.add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _Worksheet;
New_worksheet.Name :='学生信息表';
excelworksheet1.ConnectTo(New_worksheet);
//连接打开的空的EXCEL
//excelworkbook1.ConnectTo(excelapplication1.Workbooks.open(filename1,
//emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,
//emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,
//emptyparam,emptyparam,0));
//excelworkbook1.Activate;//激活
//excelworksheet1.ConnectTo(excelworkbook1.Worksheets.item[1] as _worksheet);
//excelworksheet1.Activate;
//excelworksheet1.Name:='学生信息';//表名
excelworksheet1.UsedRange[0].ClearContents;//清空
excelworksheet1.Cells.Font.Size:=12;//设置字体
excelworksheet1.Cells.Item[1,3]:='学生信息:';
DBgrid1.DataSource.DataSet.Open;
//把dbgrid1中查询到的数据发送到excel中,以便打印;
excelworksheet1.Cells.Item[2,1]:=DBgrid1.Fields[0].FieldName;
excelworksheet1.Cells.Item[2,2]:=DBgrid1.Fields[1].FieldName;
excelworksheet1.Cells.Item[2,3]:=DBgrid1.Fields[2].FieldName;
excelworksheet1.Cells.Item[2,4]:=DBgrid1.Fields[3].FieldName;
excelworksheet1.Cells.Item[2,5]:=DBgrid1.Fields[4].FieldName;
excelworksheet1.Cells.Item[2,6]:=DBgrid1.Fields[5].FieldName;
DBgrid1.DataSource.DataSet.First;
i:=3;
while not DBgrid1.DataSource.DataSet.Eof do
begin
excelworksheet1.Cells.Item[i,1]:=DBgrid1.Fields[0].AsString;
excelworksheet1.Cells.Item[i,2]:=DBgrid1.Fields[1].AsString;
excelworksheet1.Cells.Item[i,3]:=DBgrid1.Fields[2].AsString;
excelworksheet1.Cells.Item[i,4]:=DBgrid1.Fields[3].AsString;
excelworksheet1.Cells.Item[i,5]:=DBgrid1.Fields[4].AsString;
excelworksheet1.Cells.Item[i,6]:=DBgrid1.Fields[5].AsString;
DBgrid1.DataSource.DataSet.Next;
inc(i);
end;
DBgrid1.DataSource.DataSet.Close;
end;
不过,前提是你已经安装了ExcelXP相关组件......那就绝对OK啦
......................................................................................
uses
OleServer, ComObj, ShellAPI, ExcelWorksheet1, ExcelXP, ExcelApplication1;
......................................................................................
实现代码如下:
procedure TForm1.btnOutputClick(Sender: TObject);
var
i: Integer;
New_worksheet: _Worksheet;
//filename1: string;
begin
try
excelapplication1.Connect;
except
//application.MessageBox('默认路径下''D:\Excel\''找不到''库单信息.xls'',请确认该文件是否存在!','',16);
end;
if DBgrid1.DataSource.DataSet.IsEmpty then
Exit
else
excelapplication1.Visible[0]:=true;
//创建一个Workbook,并添加一张新Worksheet
excelworkbook1.ConnectTo(excelapplication1.Workbooks.Add(EmptyParam,0));
New_worksheet :=excelworkbook1.Worksheets.add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _Worksheet;
New_worksheet.Name :='学生信息表';
excelworksheet1.ConnectTo(New_worksheet);
//连接打开的空的EXCEL
//excelworkbook1.ConnectTo(excelapplication1.Workbooks.open(filename1,
//emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,
//emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,
//emptyparam,emptyparam,0));
//excelworkbook1.Activate;//激活
//excelworksheet1.ConnectTo(excelworkbook1.Worksheets.item[1] as _worksheet);
//excelworksheet1.Activate;
//excelworksheet1.Name:='学生信息';//表名
excelworksheet1.UsedRange[0].ClearContents;//清空
excelworksheet1.Cells.Font.Size:=12;//设置字体
excelworksheet1.Cells.Item[1,3]:='学生信息:';
DBgrid1.DataSource.DataSet.Open;
//把dbgrid1中查询到的数据发送到excel中,以便打印;
excelworksheet1.Cells.Item[2,1]:=DBgrid1.Fields[0].FieldName;
excelworksheet1.Cells.Item[2,2]:=DBgrid1.Fields[1].FieldName;
excelworksheet1.Cells.Item[2,3]:=DBgrid1.Fields[2].FieldName;
excelworksheet1.Cells.Item[2,4]:=DBgrid1.Fields[3].FieldName;
excelworksheet1.Cells.Item[2,5]:=DBgrid1.Fields[4].FieldName;
excelworksheet1.Cells.Item[2,6]:=DBgrid1.Fields[5].FieldName;
DBgrid1.DataSource.DataSet.First;
i:=3;
while not DBgrid1.DataSource.DataSet.Eof do
begin
excelworksheet1.Cells.Item[i,1]:=DBgrid1.Fields[0].AsString;
excelworksheet1.Cells.Item[i,2]:=DBgrid1.Fields[1].AsString;
excelworksheet1.Cells.Item[i,3]:=DBgrid1.Fields[2].AsString;
excelworksheet1.Cells.Item[i,4]:=DBgrid1.Fields[3].AsString;
excelworksheet1.Cells.Item[i,5]:=DBgrid1.Fields[4].AsString;
excelworksheet1.Cells.Item[i,6]:=DBgrid1.Fields[5].AsString;
DBgrid1.DataSource.DataSet.Next;
inc(i);
end;
DBgrid1.DataSource.DataSet.Close;
end;
不过,前提是你已经安装了ExcelXP相关组件......那就绝对OK啦
展开全部
通过 Servers 组件中的 TExcelApplication、TExcelWorksheet、TExcelWorkbook控件可导出到EXCEL ,但这种方法的前提是你运行该软件的机器必须安装过MicroSoft 的 Office 软件。
其实最好不要通过 Servers 组件导出,可以用Formula One ActiveX 控件(网上可下载的)直接导出成EXCEL格式的文件。
其实最好不要通过 Servers 组件导出,可以用Formula One ActiveX 控件(网上可下载的)直接导出成EXCEL格式的文件。
追问
大侠,能详细一点吗?我是新手,不好意思啊~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有了cxGrid后十分简单,只需要用一句就可以了:
uses
cxExportGrid4Link;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExportGrid4ToEXCEL('d:\wang.xsl',cxGrid1,True,True); // grid to excel
end;
uses
cxExportGrid4Link;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExportGrid4ToEXCEL('d:\wang.xsl',cxGrid1,True,True); // grid to excel
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单方案,输出成html表格
后缀名写成xls就ok了
你可以试试
后缀名写成xls就ok了
你可以试试
追问
您好,不好意思,我是新手,求具体方法,谢谢~
追答
输出文本文件,比如说一行数据为 数据1,数据2,数据3,数据4
翻译成html就是数据1数据2数据2数据3数据4
存为a1.xls的话,你可以看看效果
下一行,相同的
2数据12数据22数据22数据32数据4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询