delphi 高手帮忙改一下代码(DBGRID数据导入Excel)

hfut_yutian 2009-05-20 11:56:46
该程序用的是spSkinStringGrid,我想改成用DBGrid的unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Excel2000, OleServer, SkinCtrls, SkinGrids, StdCtrls, ExcelXP;

type
TForm1 = class(TForm)
Button1: TButton;
spSkinStringGrid1: TspSkinStringGrid;
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorksheet1: TExcelWorksheet;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
procedure toexcel(grid:TspSkinStringGrid;excelapp:TExcelApplication;excelbook:TExcelWorkbook;excelsheet:TExcelWorksheet;save:TSaveDialog);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
toexcel(spSkinStringGrid1,ExcelApplication1,ExcelWorkbook1,ExcelWorksheet1,SaveDialog1);

end;


procedure TForm1.toexcel(grid:TspSkinStringGrid;excelapp:TExcelApplication;excelbook:TExcelWorkbook;excelsheet:TExcelWorksheet;save:TSaveDialog);
var

i,j,row,nall:integer; //定义变量,i用以储存记录的数目, j是记录的列数 row是EXCEL的行数 nall是记录的总数

begin
if save.Execute then // 打开保存窗口,让用户选择保存的文件名

begin //inintial excel 初始化EXCEL

ExcelApp.Connect;

ExcelApp.Workbooks.Add(Null,0);

ExcelBook.ConnectTo(ExcelApp.Workbooks[1]);

ExcelSheet.ConnectTo(ExcelBook.Sheets[1] as _WorkSheet);

begin

nall:=spSkinStringGrid1.RowCount; //保存记录的数量

row:=0;
for j:=0 to Grid.ColCount-1 do //初始化行,定位在第一 行
begin
Excelsheet.Cells.item[1, j+1] := Grid.Cells[j,0];
end;
for i:=0 to nall-1 do // total rows 正规记录,从第一条记录一直到最后循环

//if i=nall then exit;
begin
for j:=0 to Grid.ColCount-1 do // column逐列导出动作
begin
ExcelSheet.Cells.Item[row+2,j+1]:=Grid.Cells[j,row+1];
end;
row:=row+1;
end;

end;
//以下是导出完毕后的动作,

ExcelBook.SaveCopyAs(Save.FileName+'.xls'); //加后缀名,确保最后是EXCEL文件

ExcelBook.Close(false);

ExcelApp.Disconnect; //断开与EXCEL的连接

Screen.Cursor:=crDefault; //指针随记录而动

showmessage('成功导出 '+inttostr(nall-1)+' 条数据!');

end;

end;

procedure TForm1.FormShow(Sender: TObject);
begin
spSkinStringGrid1.Cells[0,0]:='学号';
spSkinStringGrid1.Cells[1,0]:='姓名';
spSkinStringGrid1.Cells[2,0]:='性别';
spSkinStringGrid1.Cells[3,0]:='年龄';
spSkinStringGrid1.Cells[0,1]:='1234';
spSkinStringGrid1.Cells[0,2]:='123';
spSkinStringGrid1.Cells[0,3]:='12';
spSkinStringGrid1.Cells[0,4]:='1';
spSkinStringGrid1.Cells[1,1]:='张三';
spSkinStringGrid1.Cells[1,2]:='李四';
spSkinStringGrid1.Cells[1,3]:='王五';
spSkinStringGrid1.Cells[1,4]:='赵六';
spSkinStringGrid1.Cells[2,1]:='男';
spSkinStringGrid1.Cells[2,2]:='男';
spSkinStringGrid1.Cells[2,3]:='男';
spSkinStringGrid1.Cells[2,4]:='男';
spSkinStringGrid1.Cells[3,1]:='22';
spSkinStringGrid1.Cells[3,2]:='22';
spSkinStringGrid1.Cells[3,3]:='22';
spSkinStringGrid1.Cells[3,4]:='22';

end;

end.
...全文
108 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
de410 2009-05-21
  • 打赏
  • 举报
回复
呵呵~~这么快啊~
hfut_yutian 2009-05-21
  • 打赏
  • 举报
回复
已经解决~
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。

2,508

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧