我做一个导出Excel过程,但现在有个问题,当导出完成后他提示保存总是保存成Excel文件,我现在想保存为dat文件类型和我指定的文件名改如何修改我的代码呢?一下我我导出excel的过程代码,麻烦各位大哥帮忙看看,我现在想要的效果是在导出完成以后提示保存的默认文件名为'2011.dat'文件,小弟在线等待,万分感谢
procedure TForm4.exportexcel(exportset: TClientDataSet);
var
MyExcel, varCells : Variant;
MyCells, Cell1, Cell2, Range: OleVariant;
iRow, iCol : integer;
begin try
Screen.Cursor := crHourGlass; ///////鼠标 MyExcel := CreateOleObject('Excel.Application');
MyExcel.WorkBooks.Add;
MyExcel.Visible := False;
MyCells := MyExcel.WorkBooks[1].WorkSheets[1].Cells;
exportset.First;
iRow := 1; MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 1] := '装备类型';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 2] := '设备名称';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 3] := '装备型号';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 4] := '限制单价';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 5] := '计量单位';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 6] := '购买数量';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 7] := '计划购买单价';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 8] := '计划购买金额';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 9] := '备注';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 10] := '区域编号'; for iCol := 1 to exportset.FieldCount do
begin
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, iCol].Select;
MyExcel.Selection.Font.Bold := true;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[iCol].Font.size := 9;
end; MyExcel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[6].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[7].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[8].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[9].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[10].ColumnWidth := 20; Inc(iRow);
varCells := VarArrayCreate([1,
exportset.RecordCount,
1,
exportset.FieldCount], varVariant);
while not exportset.eof do
begin
for iCol := 1 to exportset.FieldCount -4 do
begin
varCells[iRow - 1, iCol] :=''''+exportset.Fields[iCol - 1].AsString;
end;
Inc(iRow);
exportset.Next;
end;
Cell1 := MyCells.Item[2, 1];
Cell2 := MyCells.Item[exportset.RecordCount + 1,
exportset.FieldCount];
Range := MyExcel.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2];
Range.Value := varCells;
MyCells := Unassigned;
Cell1 := Unassigned;
Cell2 := Unassigned;
Range := Unassigned;
varCells := Unassigned; //此句挺花时间,如果注释掉,则 -> **1 2003.12.05
try
form4.SaveDialog1.Filter:='datFile(*.dat)';
form4.SaveDialog1.FilterIndex:=1;
form4.SaveDialog1.DefaultExt :='dat';
MyExcel.WorkBooks[1].saveas(form4.SaveDialog1.FileName);
MyExcel.WorkBooks[1].close;
MyExcel.quit;
MyExcel := Unassigned;
except MyExcel.WorkBooks[1].close;
MyExcel.quit;
MyExcel := Unassigned; //**1: 此句又要用许多时间,如果注释掉,则 -> **2
end;
messagebeep(1); finally
Screen.Cursor := crDefault; ///////鼠标
end;
showmessage('导出成功!');
end;
procedure TForm4.exportexcel(exportset: TClientDataSet);
var
MyExcel, varCells : Variant;
MyCells, Cell1, Cell2, Range: OleVariant;
iRow, iCol : integer;
begin try
Screen.Cursor := crHourGlass; ///////鼠标 MyExcel := CreateOleObject('Excel.Application');
MyExcel.WorkBooks.Add;
MyExcel.Visible := False;
MyCells := MyExcel.WorkBooks[1].WorkSheets[1].Cells;
exportset.First;
iRow := 1; MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 1] := '装备类型';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 2] := '设备名称';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 3] := '装备型号';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 4] := '限制单价';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 5] := '计量单位';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 6] := '购买数量';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 7] := '计划购买单价';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 8] := '计划购买金额';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 9] := '备注';
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, 10] := '区域编号'; for iCol := 1 to exportset.FieldCount do
begin
MyExcel.WorkBooks[1].WorkSheets[1].Cells[iRow, iCol].Select;
MyExcel.Selection.Font.Bold := true;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[iCol].Font.size := 9;
end; MyExcel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[6].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[7].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[8].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[9].ColumnWidth := 20;
MyExcel.WorkBooks[1].WorkSheets[1].Columns[10].ColumnWidth := 20; Inc(iRow);
varCells := VarArrayCreate([1,
exportset.RecordCount,
1,
exportset.FieldCount], varVariant);
while not exportset.eof do
begin
for iCol := 1 to exportset.FieldCount -4 do
begin
varCells[iRow - 1, iCol] :=''''+exportset.Fields[iCol - 1].AsString;
end;
Inc(iRow);
exportset.Next;
end;
Cell1 := MyCells.Item[2, 1];
Cell2 := MyCells.Item[exportset.RecordCount + 1,
exportset.FieldCount];
Range := MyExcel.WorkBooks[1].WorkSheets[1].Range[Cell1, Cell2];
Range.Value := varCells;
MyCells := Unassigned;
Cell1 := Unassigned;
Cell2 := Unassigned;
Range := Unassigned;
varCells := Unassigned; //此句挺花时间,如果注释掉,则 -> **1 2003.12.05
try
form4.SaveDialog1.Filter:='datFile(*.dat)';
form4.SaveDialog1.FilterIndex:=1;
form4.SaveDialog1.DefaultExt :='dat';
MyExcel.WorkBooks[1].saveas(form4.SaveDialog1.FileName);
MyExcel.WorkBooks[1].close;
MyExcel.quit;
MyExcel := Unassigned;
except MyExcel.WorkBooks[1].close;
MyExcel.quit;
MyExcel := Unassigned; //**1: 此句又要用许多时间,如果注释掉,则 -> **2
end;
messagebeep(1); finally
Screen.Cursor := crDefault; ///////鼠标
end;
showmessage('导出成功!');
end;
解决方案 »
- 大家帮我看看这个语句错在那里
- 神奇,Delphi XML的BUG?IXMLNodeList.BeginUpdate/EndUpdate
- DBGridEh的超强难题
- 是不是我把问题发错版了?SOCKET的东西啊.
- 如何让QRDBTEXT中的值只保留2位小数?谢谢
- 挑战你的API工夫。解决了我再加100分。
- 能推荐一本学习delphi网络编程的好书么?谢谢了哦,
- 为什么我调用DLL窗体后,关闭主窗体会出错呢?
- QUERY组件active后如何得知什么时候数据集完全返回了呢?
- 图形文件中如何取出文本数据?
- 散分,每个月总有那么郁闷的几天(二)
- 不了解DELPHI或者不会用DELPHI的筒子们,请你们来看看
直接修改文件扩展名
ChangeFileExt('2011.xls', '.dat')