如何将数据导入Excel?(50分)

  • 主题发起人 主题发起人 sh8
  • 开始时间 开始时间
我的方法:SQL EM-->SQL Query Tool
查询相应数据后,保存。
打开Excel-->open,然后按向导做,打开保存的文件。
save as 为Excel文件。

很笨的方法。
 
<font size="5" color="blue">问题是你要手工,还是程序中自动实现</font>
 
用fibook
DELPHI带 V3。0 只能保存为 exec5.0
F1BOOK V6.0 保存为 exec2000.
可以用f1book检索一下。
 
呵呵,同一问题答了三次了吧,都有分赚...
procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp,MyWorkBook:Variant;
i :byte;
s: string;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
except
on Exception do raise exception.Create('无法打开Xls文件,请确认已 经安装EXCEL')
end;
ExcelApp.Visible := true;
MyworkBook:=ExcelApp.workBooks.Add;

//在此处插入读数据库及写Excel文档的代码
//其中写Excel文档的关键语句如下:
Myworkbook.worksheets[1].range['A1:D1'].Merge(True);
Myworkbook.worksheets[1].range['A1:D2'].HorizontalAlignment := $FFFFEFF4;
MyWorkBook.WorkSheets[1].Cells[1,1].Value := '热带鱼列表---1999年';

i := 2;
MyWorkBook.WorkSheets[1].Cells[i,1].Value := '鱼的名字';
MyWorkBook.WorkSheets[1].Cells[i,2].Value := '大小';
MyWorkBook.WorkSheets[1].Cells[i,3].Value := '重量';
MyWorkBook.WorkSheets[1].Cells[i,4].Value := '产区';
Myworkbook.worksheets[1].Range['A1:D2'].Font.Color := clBlue;
Myworkbook.worksheets[1].Range['A1:D1'].Font.Name := '隶书';
Myworkbook.worksheets[1].Range['A1:D1'].Font.Size := 18;


i := 3;
table1.First;
while not table1.eof do begin
MyWorkBook.WorkSheets[1].Cells[i,1].Value := table1.FieldByName('name').AsString;
MyWorkBook.WorkSheets[1].Cells[i,2].Value := table1.FieldByName('size').AsInteger;
MyWorkBook.WorkSheets[1].Cells[i,3].Value := table1.FieldByName('weight').AsInteger;
MyWorkBook.WorkSheets[1].Cells[i,4].Value := table1.FieldByName('area').AsString;
Inc(i);
table1.Next
end;
ExcelApp.Visible := true;

s := 'A3:D'+ IntToStr(i-1);

//设定字体. 栏宽等
s := 'A1:D'+ IntToStr(i-1);
Myworkbook.worksheets[1].Columns[1].ColumnWidth := 20;
Myworkbook.worksheets[1].Columns[4].ColumnWidth := 25;
Myworkbook.worksheets[1].Rows[1].RowHeight := 50;
Myworkbook.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;

Myworkbook.worksheets[1].Range.Font.Name := '仿宋';
s := 'A2:D'+ IntToStr(i-1);
Myworkbook.worksheets[1].Range.Borders.LineStyle := 1;
//页面设置
MyworkBook.WorkSheets[1].PageSetup.CenterHorizontally := true;
Myworkbook.worksheets[1].pagesetup.PrintTitleRows := 'A1';


//不能设置 papersize 属性, 原因不明
//MyworkBook.WorkSheets[1].PageSetup.PaperSize := $9;
{
try
MyWorkBook.saveas('c:/' + Edit1.Text + '.xls');
MyWorkBook.close;
except //当存为一个已有的文档而又不覆盖时将
MyWorkBook.close; //产生一个例外
end;
ExcelApp.Quit;
ExcelApp:=Unassigned; //释放VARIANT变量
}
end;
 
crab:
我试你的程序,老报错!
Undeclared identifier:'CreateOleObject'
请问我该怎麽做?
 
crab真厉害。。。
to:shuoshuo
use中加入 ComObj.
 
建议搜索一下本论坛,我曾经找到过以文本方式写excel文件者。

to crab:
抱歉,我以前亦试过用OLE,但不知为何,在P200+64M上,
对50条左右记录写出,速度奇慢。是否能够讨论一下?
 
crab 的程序有错误,
程序中i:byte;
这样造成只能保存256条纪录................
因此i:integer;
OK!!!!!!小小的错误造成了我1.5小时的浪费...
 
我这里有例子,很简单,很快的,我用了好长时间了,如果要我给你mail
 
Hi, 星巴,

我也有寫一個, 但速度有問題, 如果不介意, 能否email一個給我?
delvenchan@smthk.com
 
呵呵,是啊,我原来工作用的表小,不超过100条记录,所以就用了个字节类型,
不就是为了省几个字节嘛。如果需要操作大表,把 byte 改成 interger/word
就可以了,呵呵。
 
to boysoft: 不好意思,呵呵。
 
Hi, 星巴,
可以给我一份吗? LBinary@263.net
 
接受答案了.
 
后退
顶部