DBGrid中的数据导出Excel文件,有一列数据为varchar型,前面有0的数据,导出后就自动把0去掉了,(比如说有个数据为00000001,导出的数据就变成1了),请各位高手指点!!
解决方案 »
- dbexpress的SQLStoredProc怎么用?给个具体例子,谢了。急急急急!
- 請教一個多條件查詢語句?
- 简单问题:::如何求2个double数的mod值
- 求非递归的 二叉树的三种遍历算法
- 大家好,请问如何使查询的速度加快?
- 在dehpi中我想输出指定的内容到word的指定位置、如何在word的查找我的指定位置:@日期@ ?而且我想用剪贴板的内容代替他!谢谢各位大哥大
- 2003高考试题
- 一条SQL语句,看看是否有什么问题,谢谢
- 在用insatllshield professional 6.1打包时遇到问题请教高手?
- 在控件的事件中将控件Free了行吗?
- 如何获得鼠标指针在某个控件上的名称?????
- 在线等待:怎么在DrawGrid控件的单元格内添加文字
数据为00000001
PrintDBGridEh1.Title.Font.Size := 16;
PrintDBGridEh1.ExportToXLS('c:\');我用到的是PrintDBGridEh1控件,请问 78hgdong(赤脚) 大哥怎样将Excel对应的列设置为文本格式呢????
点击Excel对应的列,右键-->设置单元格格式-->文本
Sheet1.Columns[i].NumberFormat:='@'; //////////把某列保存成文本格式,就不会出现去掉前面的0的现象比如第一列是货号,有001,002等等,加上
Sheet1.Columns[1].NumberFormat:='@'; 到出excel后还能保持原样001,002 否则excel自动把它当成数字处理,会保存成1,2
此法正确,别的方法没试过
xls.workbooks[1].sheets[1].Columns[2].Width:=150;
这样好象不行
这样我试过了,报错
1.首先我是把DBGrid里面的数据先写成一个文本,每行一个记录,每个字段之间使用Tab分割
while not DBGrid.DataSet.eof do
begin
...............
end;
2.接着,我要连接Excel
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Workbooks.Add(NULL,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[ExcelApplication1.Workbooks.Count]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
3.然后,我要使用ExcelTableQuery控件直接把文本倒入到excel里面来
ExcelWorkSheet1.QueryTables.Add('TEXT;'+'C:\tmp2.txt',ExcelWorkSheet1.Range['A1','A1'],EmptyParam);
ExcelQueryTable1.ConnectTo(ExcelWorkSheet1.QueryTables[1] as _QueryTable);
ExcelQueryTable1.TextFileColumnDataTypes:=Text2Excel_Format;
ExcelQueryTable1.Refresh;
注意:(1)'C:\tmp2.txt'就是我倒的文件
(2)ExcelQueryTable1.TextFileColumnDataTypes这里就是指定的文本格式,主要是区分列是文本还是数字,只要指定了为文本,就不会消除前面的0了.
Text2Excel_Format是一个整数数组,类似于(1,2,1,2).指定为1自动判断是文本还是数字,指定为2则一定是文本.
为了获得,我这里写了一个函数
function TComm.InitFormatA(DataSet: TDataSet): OleVariant;
var i:integer;
A:Variant;
begin
A:=VarArrayCreate([0,DataSet.Fields.Count-1],varVariant);
for i:=0 to DataSet.FieldCount-1 do
if DataSet.Fields[i].DataType=ftString then A[i]:=2 else A[i]:=1;
InitFormatA:=A;
end;