DELPHI导出EXCEL问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI导出EXCEL问题相关的知识,希望对你有一定的参考价值。

我用DELPHI编了一个人事程序,加了个导出EXCEL的功能,但是导出人事资料的时候,在EXCEL中看的时候出现以下问题:十五位数的可以正确,十八位的后面三位全部变成了三个零,但是如果某人的身份证后面带个字母X的话又可以完全正确的显示出来。请问这是什么问题导致的。如何解决?
忘记说了。我用的数据库是SQL的。

参考技术A 导出EXCEL时注意一下,在所有的身份证号码前面加上一个英文的单引号就可以了,就是这个符号“'”,这样所有的身份证都为左对齐,并且不会变为科学计数发,不管多少位都没问题。

试试看吧,不会有问题的,那个单引号不会显示出来。

200分好爽哦:)
参考技术B list控件显示的数据好像不能直接导出到excel,你可以做一个查询,然后直接导出到Excel(好像是用‘另存为’),如果你要保存在已有的Excel文档,用复制粘贴好了,也挺方便的。本回答被提问者采纳 参考技术C procedure saveToExcel();
var
Eclapp,workbook:variant;
i,n:integer;
begin
if not adoquery1.Active then exit;
if adoquery1.RecordCount<=0 then exit;

if application.MessageBox('确认导出excel表吗?','提示',mb_okcancel+mb_iconinformation)=idcancel then exit;
Eclapp := createoleobject('Excel.Application');
Eclapp.workbooks.add;
for i:=0 to dbgrid2.FieldCount-1 do
begin
Eclapp.cells[1,i+1]:=dbgrid2.Columns[i].Title.Caption;
end;
Eclapp.cells[1,5]:='签字';

adoquery1.First;
n:=2;
while not adoquery1.Eof do
begin
eclapp.cells[n,1] := adoquery1.Fields[0].AsString;
eclapp.cells[n,2] := adoquery1.Fields[1].AsString;
eclapp.cells[n,3] := adoquery1.Fields[2].AsString;
eclapp.cells[n,4] := adoquery1.Fields[4].AsString;
eclapp.cells[n,6] :=' ';
inc(n);
adoquery1.Next;
end;

eclapp.cells[n,1] := '满足条件记录的总数为:'+inttostr(adoquery1.RecordCount)+'条';
application.MessageBox('数据导出完成!','提示',mb_ok+mb_iconinformation);
eclapp.visible := true;

end;
参考技术D 如果你只是为了导数据可以使用sqlserver中的“导入导出数据”功能,非常方便的。
如果是为了编写程序,要使用ODBC连结两端数据,通过程序一条条记录导入

Delphi中导出数据到excel

我的库中有一文本型的字段为22位数字的条码,为什么导入到excel中变成了:1.23456789E+21,如何让它显示全部的22位数呢,代码如下:
var
Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.FormCreate(Sender: TObject);
begin
adoquery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+extractfilepath(application.exename)+'Person.mdb'+';Persist Security Info=False';
adoquery1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject); //导出
var
itemp,jtemp:integer;
begin
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=true;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelWorksheet1.ConnectTo(ExcelApplication1.Worksheets[1] as _Worksheet);
//ExcelWorksheet1.Columns.Font.Size:=20;
//ExcelWorksheet1.Columns.Font.Color:=xlwdred;
jtemp:=1;
with AdoQuery1 do
begin
first;
while not eof do
begin
for itemp:=1 to fieldCount do
begin
ExcelWorksheet1.Cells.Item[jtemp,itemp]:=fields[itemp-1].AsString;
end;
inc(jtemp);
next;
end;
end;
end;

if itemp =条形码列 then
ExcelWorksheet1.Cells.Item[jtemp,itemp]:=''''+fields[itemp-1].AsString;
参考技术A 生成文本数据,你生成的数值,是科学计数

以上是关于DELPHI导出EXCEL问题的主要内容,如果未能解决你的问题,请参考以下文章

delphi dbgrideh部分导出excel出错

delphi2010 dbgrid 导出 excel

Delphi 导出Excel

没有excel从Delphi导出到excel

DELPHI 导出到excel的问题,从数据库抓取数据并导出,按编号生成一个个独立的EXCEL文件

delphi写的导出excel程序 运行一次程序只导出一次