excel导出的问题。 (20分)

  • 主题发起人 主题发起人 寒与凉
  • 开始时间 开始时间

寒与凉

Unregistered / Unconfirmed
GUEST, unregistred user!
把一个DATASET导出成EXCEL文件如下: 有两个问题
一:如何把EXCEL中的任意一列设为文本或者其他方式而不是用常规显示?
二:怎么能把导出EXCEL存入任意的位置?
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
i, j: integer;
filename: string;
begin
filename := concat(extractfilepath(application.exename), Name, '.xls');
try
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel 没有安装!’', 'Hello', MB_ICONERROR + mb_Ok);
Abort;
end;
try
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
query1.First;
for j := 0 to query1.Fields.Count - 1 do
begin
//设置启始行的位置和字体
ExcelWorksheet1.Cells.item[1, j + 1] := query1.Fields[j].DisplayLabel;
ExcelWorksheet1.Cells.item[1, j + 1].font.size := '10';
end;
for i := 2 to query1.RecordCount + 1 do
begin
for j := 0 to query1.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[i, j + 1] :=
query1.Fields[j].Asstring;
ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
end;
query1.Next;
end;
ExcelWorksheet1.Columns.AutoFit;
ExcelWorksheet1.SaveAs(filename);
Application.Messagebox(pchar('数据成功导出' + filename), '系统消息',
mb_Ok);
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Free;
ExcelWorksheet1.Free;
ExcelWorkbook1.Free;
end;
end;
 
if formatdatetime('mm/dd/yyyy',Query2.fieldbyname('Maxqsr').asdatetime)>formatdatetime
('mm/dd/yyyy',03/20/2002)
改为
if Query2.Fields[0].AsDateTime>StrToDate('2002-03-20') then
 
各位帮帮忙啊
 
嫌分少?我可以加的!!
 
我帮你看看,晚上来。
因为我最近也在做关于这方面的东西
 
好的,我晚上没法上网,明天等你的好消息。
 
高手呢???
 
问题一:
str:=...//Excel字符串;
str:=#39+str;
//输出后为 'ffff;
问题二:
if(SaveDialog1.Excete)then
begin
try
ExcelWorksheet1.SaveCopyAs(SaveDialog1.FileName);
ExcelWork.quit;
ExcelApplication.Close;
except
...
...
end;
 
多给我一点分呀。至少50分
 
在Excel表中如果写入‘1’的话,它会将其看成整数; 在其前面加个‘ 它就是字型;
那如何加’呢。只用在string str=#39+str1;//str1.excel表字符;
 
一:如何把EXCEL中的任意一列设为文本或者其他方式而不是用常规显示?
worksheet.cells[i,i].NumberFormatLocal :='@';//设置成字符形式
worksheet.cells[i,i].NumberFormatLocal :='000000' //数字
worksheet.cells[i,i].NumberFormatLocal :='yyyy-m-d' //日期格式
二:怎么能把导出EXCEL存入任意的位置?
用Dialog吧[:D][:D][:D]
 
在上面的代码中filename := concat(extractfilepath(application.exename), Name, '.xls');
是决定存储路径和名称的,能不能不用(SaveDialog1.Excete)来改变存储的路径和名称呢?
 
请教高手:我导出的时候如果记录少没有问题,可当记录到600条左右的时候就死机了,
这是为什么?

 
如果有同名的,
又该怎么处理呐
 
用楼主的哪种方法比较慢,我以前试过的。
用CreateOleObject( 'Excel.Application' )好了,比你哪种快。
 
whhtao能详细说明一下呢?有好方法就说给大家听听嘛
 
再加100分!
 
下面是我以前写的。
发错了,重发。
 
procedure WriteExcel(adsdata:Tdataset;sname,title:string);
var
ExcelApp:Variant;
i,j:integer;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
AdsData.First;
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelApp.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;
end;
for i := 4 to AdsData.RecordCount + 3 do
begin
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelApp.Cells.item[i, j + 1] :=''''+
AdsData.Fields[j].Asstring;
end;
AdsData.Next;
end;
ExcelApp.Visible := True;
finally
end;
end;
 
[Error] Unit1.pas(126): Undeclared identifier: 'CreateOleObject' ???
 
后退
顶部