Excel导出问题!!~~~~~不知道怎么解决,

yaccor 2005-09-02 01:37:03
我有一张职工资料表,里面有联系电话和身份证号码字段,导出到Excel中的时候,
电话号码和身份证号码都变成了科学计算表达式,号码前面的0都被清除掉了。
比如:电话号码07113244111就会变成7113244111
身份证号码1111111111111变成了1.111E+14之类的数据,
怎么解决这样的问题?电话号码和身份证号码我都是用的文本型数据
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaccor 2005-09-02
  • 打赏
  • 举报
回复
Bear_King(今夜无人入睡)
你的方法行不通的,数字前面的0会自动去掉


lovendII(戒情人)
这一句加在哪??我试了好几个地方都不行啊

lovendII 2005-09-02
  • 打赏
  • 举报
回复
Sheet1.Columns[i].NumberFormat:='@'

这段代码是把第i列显示为文本形式,就不存在以上这个问题了。

比如第一烈是电话号码:0755xxxxxx ,通过以上语句的处理之后,将正常显示0755xxxxx

而不会把前面的0去掉。
Bear_King 2005-09-02
  • 打赏
  • 举报
回复
哈哈哈,这个简单,你只要把你的EXCEL中需要输出数字的地方的单元格的格式改边成文本就可以了。在EXCEL中修改。
catfather46 2005-09-02
  • 打赏
  • 举报
回复
录制一下设置一个单元格的格式为文本的vba代码,然后翻译成delphi的也可以实现
hzgldz 2005-09-02
  • 打赏
  • 举报
回复
导出前加 ' 而不是 ’
比始说 写成 ‘'’+要导出的数
如:cell(1,1)='''+07113244111
yaccor 2005-09-02
  • 打赏
  • 举报
回复
我的导出Excel过程是这样的:
procedure TFrm_Main.ExcelDBGrid(FdbGrid: TDBgrideh; toExcel: Boolean);
var
bm: TBookmark;
col, row: Integer;
sline, rownum: string;
mem: TMemo;
ExcelApp: Variant;
reccount, RowCount: Integer;
MyDBSumList: TDBSumList;
begin
reccount := 0;
MyDBSumList:=TDBSumList.Create(nil);
MyDBSumList.DataSet := FDBGrid.DataSource.DataSet;
MyDBSumList.SumCollection.Add;
MyDBSumList.SumCollection.Items[0].GroupOperation := Gocount;//你可以换成gosum
MyDBSumList.SumCollection.Items[0].FieldName := FDBGrid.Fields[0].FullName;
MyDBSumList.Active := True;
RowCount := trunc(MyDBSumList.SumCollection.Items[0].SumValue);
MyDBSumList.Free;
Screen.Cursor := crHourglass;
FDBGrid.DataSource.DataSet.DisableControls;
bm := FDBGrid.DataSource.DataSet.GetBookmark;
FDBGrid.DataSource.DataSet.First;
if toExcel then
begin
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
end;
mem := TMemo.Create(nil);
mem.Parent := Fdbgrid.Parent;
mem.Visible := False;
mem.Clear;
sline := '';
for col := 0 to FDBGrid.Columns.Count - 1 do
sline := sline + FDBGrid.Columns[col].Title.Caption + #9;
mem.Lines.Add(sline);
for row := 1 to RowCount do
begin
sline := '';
for col := 0 to FDBGrid.FieldCount - 1 do
begin
sline := sline + FDBGrid.Columns[col].DisplayText + #9;
end;
mem.Lines.Add(sline);
if row mod 150 = 0 then
begin
mem.SelectAll;
mem.CopyToClipboard;
if toExcel then
begin
rownum := 'A' + inttostr(reccount + 1);
ExcelApp.Workbooks[1].WorkSheets[1].Range[rownum].PasteSpecial;
mem.Clear;
Clipboard.Clear;
reccount := row + 1;
end;
end;
FDBGrid.DataSource.DataSet.Next;
end;
mem.SelectAll;
mem.CopyToClipboard;
if toExcel then
begin
rownum := 'A' + inttostr(reccount + 1);
ExcelApp.Workbooks[1].WorkSheets[1].Range[rownum].PasteSpecial;
ExcelApp.Visible := True;
end;
FreeAndNil(mem);
FDBGrid.DataSource.DataSet.GotoBookmark(bm);
FDBGrid.DataSource.DataSet.FreeBookmark(bm);
FDBGrid.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
end;
yaccor 2005-09-02
  • 打赏
  • 举报
回复
在导出的数字前加‘’怎么实现,我的数据类型都是在表里面定义的,我现在是把DGBridEh表格中的内容导出成Excel文件啊
hzgldz 2005-09-02
  • 打赏
  • 举报
回复
在要导出的数字前加个 ' 即可,让数字变成字符串即可
hqhhh 2005-09-02
  • 打赏
  • 举报
回复
导出时设置文本型应该可以
ffanpeng 2005-09-02
  • 打赏
  • 举报
回复
设置单元格格式:数值小数保留0位

829

社区成员

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

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