爱
爱睡的狗狗
Unregistered / Unconfirmed
GUEST, unregistred user!
我有一段将数据集导出到excel的代码,可是时间类型导出后显示不正确,有没有好的办法解决.如果时间是 2006-10-12 16:02:00,那么在excel中显示如下;39006.4472222222
还有就是有没有好是方法可以在将数据集导入到excel中,可以给它加标题 如
单位 时间 产品
11 2006-10-12 16:02:00 a (此行数据为数据集中的内容)
代码如下:
//将数据集中的数据导入到excel表中
begin
DrExcel(Query);
end;
//----------------导入Excel过程实现----------------
Procedure TForm_AlertMessage.DrExcel(AdoQry:TAdoQuery);
var
DrExcelApp:TExCelApplication;
DrExcelWb:TExcelWorkbook;
DrExcelWs:TExcelWorkSheet;
Empty:OleVariant;
Col:Char;
Row,j:integer;
R:String;
Begin
//----创建Excel对象
DrExcelApp:=TExCelApplication.Create(application);
DrExcelWb:=TExcelWorkBook.Create(Application);
DrExcelWs:=TExcelWorkSheet.Create(Application);
Try
DrExcelApp.Connect;
except
messagedlg('Excel可能没有安装',mtError,[mbok],0);
Abort;
end;
DrExcelapp.Visible[0]:=true;
try
Empty:=EmptyParam;
//---添加一个新的工作簿
DrExcelApp.Workbooks.Add(Empty,0);
//---组件和工作簿相连
DrExcelWb.ConnectTo(DrExcelapp.Workbooks.Item[DrExcelApp.Workbooks.count]);
//----激活工作簿
DrExcelWb.Activate;
//----组件和工作表相连
DrExcelWs.ConnectTo(DrExcelWb.Worksheets[1] as _WorkSheet);
//-------------------导入数据-------------------------------------------------
if adoqry.IsEmpty then
begin
//showmessage('您好,没有要导出到excel中的数据');
exit;
end;
With AdoQry do
begin
First; //--移到第一条
Col:='A'; //--第一列为A
Row:=2; //--从第一行开始
drexcelws.Range['A1','A1'].Value2:='单位';
drexcelws.Range['B1','B1'].Value2:='时间';
//-------从数据库中读取纪录
While not eof do begin
For j:=0 to fields.Count-1 do begin
R:=String(Col)+inttostr(Row);
//----将数据库中的数据写入Excel中
DrExcelws.Range[R,R].Value2:=Fields.Fields[j].Value;
//-----得到下一列,依次为A,B,C
Col:=Chr(ord(Col)+1);
end;
inc(Row); //--下一行
Col:='A'; //--重新指向第一列
next; //--下一条记录
end;
end;
DrExcelWb.Close(xlDonotsaveChanges);
//-------------------导入数据结束-------------------------------------------------
//-------------------释放对象-----------------
AdoQry.First;
DrExcelApp.Free;
DrExcelWb.Free;
DrExcelWs.Free;
Except
//----关闭连接--------
DrExcelWb.Close(xldonotsavechanges);
DrExcelApp.Disconnect;
DrExcelApp.Free;
DrExcelWb.Free;
DrExcelWs.Free;
AdoQry.First;
end;
end;
还有就是有没有好是方法可以在将数据集导入到excel中,可以给它加标题 如
单位 时间 产品
11 2006-10-12 16:02:00 a (此行数据为数据集中的内容)
代码如下:
//将数据集中的数据导入到excel表中
begin
DrExcel(Query);
end;
//----------------导入Excel过程实现----------------
Procedure TForm_AlertMessage.DrExcel(AdoQry:TAdoQuery);
var
DrExcelApp:TExCelApplication;
DrExcelWb:TExcelWorkbook;
DrExcelWs:TExcelWorkSheet;
Empty:OleVariant;
Col:Char;
Row,j:integer;
R:String;
Begin
//----创建Excel对象
DrExcelApp:=TExCelApplication.Create(application);
DrExcelWb:=TExcelWorkBook.Create(Application);
DrExcelWs:=TExcelWorkSheet.Create(Application);
Try
DrExcelApp.Connect;
except
messagedlg('Excel可能没有安装',mtError,[mbok],0);
Abort;
end;
DrExcelapp.Visible[0]:=true;
try
Empty:=EmptyParam;
//---添加一个新的工作簿
DrExcelApp.Workbooks.Add(Empty,0);
//---组件和工作簿相连
DrExcelWb.ConnectTo(DrExcelapp.Workbooks.Item[DrExcelApp.Workbooks.count]);
//----激活工作簿
DrExcelWb.Activate;
//----组件和工作表相连
DrExcelWs.ConnectTo(DrExcelWb.Worksheets[1] as _WorkSheet);
//-------------------导入数据-------------------------------------------------
if adoqry.IsEmpty then
begin
//showmessage('您好,没有要导出到excel中的数据');
exit;
end;
With AdoQry do
begin
First; //--移到第一条
Col:='A'; //--第一列为A
Row:=2; //--从第一行开始
drexcelws.Range['A1','A1'].Value2:='单位';
drexcelws.Range['B1','B1'].Value2:='时间';
//-------从数据库中读取纪录
While not eof do begin
For j:=0 to fields.Count-1 do begin
R:=String(Col)+inttostr(Row);
//----将数据库中的数据写入Excel中
DrExcelws.Range[R,R].Value2:=Fields.Fields[j].Value;
//-----得到下一列,依次为A,B,C
Col:=Chr(ord(Col)+1);
end;
inc(Row); //--下一行
Col:='A'; //--重新指向第一列
next; //--下一条记录
end;
end;
DrExcelWb.Close(xlDonotsaveChanges);
//-------------------导入数据结束-------------------------------------------------
//-------------------释放对象-----------------
AdoQry.First;
DrExcelApp.Free;
DrExcelWb.Free;
DrExcelWs.Free;
Except
//----关闭连接--------
DrExcelWb.Close(xldonotsavechanges);
DrExcelApp.Disconnect;
DrExcelApp.Free;
DrExcelWb.Free;
DrExcelWs.Free;
AdoQry.First;
end;
end;