数据导出Excel问题[内容由网上收集]

 怎样用语句控制EXCEL文件另存为并且设定保存类型啊
我是用createoleobject动态生成的EXCEL表
代码如下:
SaveDialog1.Title:='保存文件';
SaveDialog1.Filter:='文件格式(*.xls)|*.xls';
if SaveDialog1.Execute then
s2:=savedialog1.FileName;
CopyFile(PChar(filename),PChar(s2),False);
ExcelApp:= CreateOleObject( 'Excel.Application' );
excelapp.workbooks.open(SaveDialog1.FileName);
但是这个保存类型是个假象,实际保存下来是个无法辨认的文件。
各位弟兄搭个手,多谢了

1:excelapp.saveas(xlsfilename)
2:这个早就试过了 不行 连SAVEAS都不能用 不知道为啥
还有我是用CopyFile(PChar(filename),PChar(s2),False);来保存一个模板
不是用excelapp.saveas(xlsfilename)来保存
3:我来强!!!![:D]
4:来学技术 ,不强分!
5:Delphi控制Excel2000心得- -

 

类 别:COM & ActiveX
(一) 使用动态创建的方法
首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );
1) 显示当前窗口:
ExcelApp.Visible := True;
2) 更改 Excel 标题栏:
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
3) 添加新工作簿:
ExcelApp.WorkBooks.Add;
4) 打开已存在的工作簿:
ExcelApp.WorkBooks.Open( 'C:/Excel/Demo.xls' );
5) 设置第2个工作表为活动工作表:
ExcelApp.WorkSheets[2].Activate;

ExcelApp.WorksSheets[ 'Sheet2' ].Activate;
6) 给单元格赋值:
ExcelApp.Cells[1,4].Value := '第一行第四列';
7) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
9) 在第8行之前插入分页符:
ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
10) 在第8列之前删除分页符:
ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
11) 指定边框线宽度:
ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / )
12) 清除第一行第四列单元格公式:
ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
13) 设置第一行字体属性:
ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
14) 进行页面设置:
a.页眉:
ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
b.页脚:
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
c.页眉到顶端边距2cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.顶边距2cm:
ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:
ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左边距2cm:
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:
ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.页面水平居中:
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:
ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
15) 拷贝操作:
a.拷贝整个工作表:
ExcelApp.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;
c.从A1位置开始粘贴:
ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelApp.ActiveSheet.Range.PasteSpecial;
16) 插入一行或一列:
a. ExcelApp.ActiveSheet.Rows[2].Insert;
b. ExcelApp.ActiveSheet.Columns[1].Insert;
17) 删除一行或一列:
a. ExcelApp.ActiveSheet.Rows[2].Delete;
b. ExcelApp.ActiveSheet.Columns[1].Delete;
18) 打印预览工作表:
ExcelApp.ActiveSheet.PrintPreview;
19) 打印输出工作表:
ExcelApp.ActiveSheet.PrintOut;
20) 工作表保存:
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveSheet.PrintPreview;
21) 工作表另存为:
ExcelApp.SaveAs( 'C:/Excel/Demo1.xls' );
22) 放弃存盘:
ExcelApp.ActiveWorkBook.Saved := True;
23) 关闭工作簿:
ExcelApp.WorkBooks.Close;
24) 退出 Excel:
ExcelApp.Quit;

(二) 使用Delphi 控件方法
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
1) 打开Excel
ExcelApplication1.Connect;
2) 显示当前窗口:
ExcelApplication1.Visible[0]:=True;
3) 更改 Excel 标题栏:
ExcelApplication1.Caption := '应用程序调用 Microsoft Excel';
4) 添加新工作簿:
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
5) 添加新工作表:
var Temp_Worksheet: _WorkSheet;
begin
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
End;
6) 打开已存在的工作簿:
ExcelApplication1.Workbooks.Open (c:/a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)
7) 设置第2个工作表为活动工作表:
ExcelApplication1.WorkSheets[2].Activate; 或
ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;
8) 给单元格赋值:
ExcelApplication1.Cells[1,4].Value := '第一行第四列';
9) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;
10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
11) 在第8行之前插入分页符:
ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1;
12) 在第8列之前删除分页符:
ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;
13) 指定边框线宽度:
ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / )
14) 清除第一行第四列单元格公式:
ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;
15) 设置第一行字体属性:
ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书';
ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;
16) 进行页面设置:
a.页眉:
ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';
b.页脚:
ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页';
c.页眉到顶端边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.顶边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.页面水平居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;
17) 拷贝操作:
a.拷贝整个工作表:
ExcelApplication1.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
c.从A1位置开始粘贴:
ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelApplication1.ActiveSheet.Range.PasteSpecial;
18) 插入一行或一列:
a. ExcelApplication1.ActiveSheet.Rows[2].Insert;
b. ExcelApplication1.ActiveSheet.Columns[1].Insert;
19) 删除一行或一列:
a. ExcelApplication1.ActiveSheet.Rows[2].Delete;
b. ExcelApplication1.ActiveSheet.Columns[1].Delete;
20) 打印预览工作表:
ExcelApplication1.ActiveSheet.PrintPreview;
21) 打印输出工作表:
ExcelApplication1.ActiveSheet.PrintOut;
22) 工作表保存:
if not ExcelApplication1.ActiveWorkBook.Saved then
ExcelApplication1.ActiveSheet.PrintPreview;
23) 工作表另存为:
ExcelApplication1.SaveAs( 'C:/Excel/Demo1.xls' );
24) 放弃存盘:
ExcelApplication1.ActiveWorkBook.Saved := True;
25) 关闭工作簿:
ExcelApplication1.WorkBooks.Close;
26) 退出 Excel:
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
(三) 使用Delphi 控制Excle二维图
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet
var asheet1,achart, range:variant;
1)选择当第一个工作薄第一个工作表
asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];
2)增加一个二维图
achart:=asheet1.chartobjects.add(100,100,200,200);
3)选择二维图的形态
achart.chart.charttype:=4;
4)给二维图赋值
series:=achart.chart.seriescollection;
range:=sheet1!r2c3:r3c9;
series.add(range,true);
5)加上二维图的标题
achart.Chart.HasTitle:=True;
achart.Chart.ChartTitle.Characters.Text:=' Excle二维图'
6)改变二维图的标题字体大小
achart.Chart.ChartTitle.Font.size:=6;
7)给二维图加下标说明
achart.Chart.Axes(xlCategory, xlPrimary).HasTitle := True;
achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := '下标说明';
8)给二维图加左标说明
achart.Chart.Axes(xlValue, xlPrimary).HasTitle := True;
achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := '左标说明';
9)给二维图加右标说明
achart.Chart.Axes(xlValue, xlSecondary).HasTitle := True;
achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text := '右标说明';
10)改变二维图的显示区大小
achart.Chart.PlotArea.Left := 5;
achart.Chart.PlotArea.Width := 223;
achart.Chart.PlotArea.Height := 108;
11)给二维图坐标轴加上说明
achart.chart.seriescollection[1].NAME:='坐标轴说明';

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
ComObj;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure setEclStyle;
procedure drawImg;
function getColChar(col: Integer): string;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
eclApp: Variant;
imgFile: string;

const
rowStart = 6;
colStart = 3;


//生成99乘法表
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: Integer;
row,col: Integer;
begin
try
//创建OLE对象Excel Application与 WorkBook
eclApp:= CreateOleObject('Excel.Application');
eclApp.workBooks.Add;
except
messagebox(handle,'您的机器里可能未安装Microsoft Excel或异常','无法生成',MB_OK or MB_ICONWARNING);
Exit;
end;

eclApp.visible:= True;

Hide; //生成过程将程序隐藏
try
for i:= 1 to 9 do
begin
eclApp.Cells(rowStart, colStart + i):= i;
eclApp.Cells(rowStart + i, colStart):= i;
for j:= 1 to 9 do
begin
row:= rowStart + i;
col:= colStart + j;
eclApp.Cells(row, col):= i * j;

//设置字体,底框颜色 颜色值为 $00BBGGRR
if i < j then
begin
eclApp.Cells.item[row,col].Font.Color:= $00FF0000;
eclApp.Cells.item[row,col].Interior.Pattern:= 1;
eclApp.cells.item[row,col].Interior.ColorIndex:= 12;
end
else if i > j then
begin
eclApp.Cells.item[row,col].Font.Color:= $0000FF00;
eclApp.Cells.item[row,col].Interior.Pattern:= 1;
eclApp.cells.item[row,col].Interior.ColorIndex:= 9;
end
else begin
eclApp.Cells.item[row,col].Font.Color:= $000000FF;
eclApp.Cells.item[row,col].Interior.Pattern:= 1;
eclApp.cells.item[row,col].Interior.ColorIndex:= 6;
end;
end;
end;
SetEclStyle;
//设置纸线为横向
eclApp.ActiveSheet.PageSetup.Orientation:= 2;
finally
Show;
end;
Application.BringToFront; //将应用程序提前
messagebox(handle,'生成完毕,您可以再进行编辑并存盘','生成成功',MB_OK or MB_ICONINFORMATION);
end;

//关闭程序时,释放Excel应用对象
procedure TForm1.FormDestroy(Sender: TObject);
begin
//关闭eclApp
//若不进行这一步,在任务管理器中会驻留Excel进程
//但可以不必关闭Excel (eclApp.Quit),这样,操作员可以继续编辑或打印表格
eclApp:= Unassigned;
end;

//设置表格的显示样式
procedure TForm1.setEclStyle;
var
Sheet, Range:Variant;
s: string;
rct: TRect;
begin

Sheet:= eclApp.WorkBooks[1].WorkSheets[1];

s:= Format('%s%d:%s%d',[getColChar(colStart),
rowStart,
getColChar(colStart + 9),
rowStart + 9]);
Range:= Sheet.Range[s]; //得到区域对象

Range.Font.Name:= 'Tahoma';
Range.Font.Bold:= True;

//设置区域的外框线型
// 1: Left, 2: Right, 3: Top, 4: bottom
// 5: /, 6: / (斜线)
// 7: Left, 8: Top, 9: bottom, 10: Right (不包括内部单元格)
// 11, 12 , 内部单元格线条 (分别是竖线和横线,12我用了没效果)
Range.Borders[7].LineStyle:= 1;
Range.Borders[7].Weight:= 3;
Range.Borders[8].LineStyle:= 1;
Range.Borders[8].Weight:= 3;
Range.Borders[9].LineStyle:= 1;
Range.Borders[9].Weight:= 3;
Range.Borders[10].LineStyle:= 1;
Range.Borders[10].Weight:= 3;

Range.Borders[11].LineStyle:= 1;
Range.Borders[11].Weight:= 2;
Range.Borders[11].ColorIndex:= 2;
Range.Borders[12].LineStyle:= 1;
Range.Borders[12].Weight:= 2;
Range.Borders[12].ColorIndex:= 2;

//水平,垂直对齐方式
Range.HorizontalAlignment:= 3;
Range.VerticalAlignment:= 2;

//单元格行高,列宽
Range.ColumnWidth:= 9;
Range.RowHeight:= 18;

//设置表头
s:= Format('%s%d:%0:s%2:d',[getColChar(colStart),
rowStart,
rowStart + 9]);
Range:= Sheet.Range[s]; //得到区域对象
Range.ColumnWidth:= 5;
Range.Interior.Pattern:= 1;
Range.Interior.ColorIndex:= 3;

s:= Format('%s%d:%s%1:d',[getColChar(colStart + 1),
rowStart,
getColChar(colStart + 9)]);
Range:= Sheet.Range[s]; //得到区域对象
Range.Interior.Pattern:= 1;
Range.Interior.ColorIndex:= 3;

//表格标题
s:= Format('%s%d:%s%1:d',[getColChar(colStart),
rowStart - 2,
getColChar(colStart + 9)]);
Range:= Sheet.Range[s];

//合并单元格
Range.Merge;
Range.Select;
//============================================
//在当前选定单元格插入图片
Sheet.Pictures.Insert(imgFile).Select;
//移动图片
eclApp.Selection.ShapeRange.IncrementLeft(180);
eclApp.Selection.ShapeRange.IncrementTop(-30);

rct.Left:= Range.Left;
rct.Top:= Range.Top;
rct.Right:= rct.Left + Range.Width;
rct.Bottom:= rct.Top + Range.Height;
//在指定坐标添加线条
Sheet.Shapes.AddLine(rct.Left,rct.Top,rct.Right,rct.Top).Select;
eclApp.Selection.ShapeRange.IncrementTop(18);
eclApp.Selection.ShapeRange.Line.Weight:= 2.25;
//在指定坐标添加文本框 并选定
Sheet.Shapes.AddTextBox(1,rct.Right - 160,rct.Top,160,16).Select;
eclApp.Selection.Characters.Text:= 'Design By Mostone.Jiang';
//选中字符的起始位置与长度(长度省去则包含所有后面的字符)
eclApp.Selection.Characters(11,13).Font.FontStyle:= '加粗 倾斜';
eclApp.Selection.Characters(11,13).Font.Underline:= 1;
eclApp.Selection.Characters(11,13).Font.colorIndex:= 46;
eclApp.Selection.Font.Name:= 'Tahoma';
eclApp.Selection.ShapeRange.Fill.Visible := 0;
eclApp.Selection.ShapeRange.Line.Visible := 0;


end;

//程序启动时,创建一张图片,用来插入到生成的Excel表格中
procedure TForm1.FormCreate(Sender: TObject);
var
d: Word;
buf: array[0..255] of char;
begin
d:= GetTempPath(sizeof(buf),buf);
if d > 0 then
begin
imgFile:= buf + 'imgTL.jpg';
drawImg; //调用自定义过程,绘制图形并保存到临时目录
//也可以考虑使用剪贴板
end
else messagebox(handle,'无法得到临时目录!/n你可以继续运行程序/n但是生成的Excel表格将没有图例','取临时文件出错',MB_OK or MB_ICONINFORMATION);
end;

//随便画张图
procedure TForm1.drawImg;
var
bitMap: TBitMap;
w,h: Integer;
begin
W:= 268;
H:= 50;
bitMap:= TBitMap.Create;
try
bitMap.Width:= W;
bitMap.Height:= H;
with bitMap.Canvas do
begin
Font.Size:= 36;
Font.Name:= '隶书';

Brush.Style:= bsClear;

TextOut(5,9, '九九乘法表');
TextOut(5,5, '○○');
end;
bitMap.SaveToFile(imgFile);
finally
bitMap.Free;
end;
end;

//返回列的字符表示符
function TForm1.getColChar(col: Integer): string;
const
Ai = 65; //'A'的ASCII码值
begin
if col > 256 then
begin
//允许的最大列数
raise ERangeError.CreateFmt('列(%d)超出允许的最大列数[256]', [col]);
exit
end;
if col <= 26 then Result:= chr(Ai + col -1) else
Result:= chr(Ai + col div 26 - 1) + chr(Ai + (col - 1) mod 26);
end;

end.

 

//关闭程序时,释放Excel应用对象
procedure TForm1.FormDestroy(Sender: TObject);
begin
//关闭eclApp
//若不进行这一步,在任务管理器中会驻留Excel进程
//但可以不必关闭Excel (eclApp.Quit),这样,操作员可以继续编辑或打印表格
eclApp:= Unassigned;
end;


//合并单元格
Range.Merge;
Range.Select;


//


自己用的一个过程,把数据集导如导excel,adsdata可以换成任意你用导的数据集
WriteExcel(AdsData:Tclientdataset; sName, Title: string);
var
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
i, j: integer;
filename: string;
begin
filename := concat(sName, '.xls');
try
ExcelApplication1 := TExcelApplication.Create(Application);
ExcelWorksheet1 := TExcelWorksheet.Create(Application);
ExcelWorkbook1 := TExcelWorkbook.Create(Application);
ExcelApplication1.Connect;
except
Application.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);
Abort;
end;
try
ExcelApplication1.Workbooks.Add(EmptyParam, 0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);
AdsData.First;
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;
ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';
end;
for i := 4 to AdsData.RecordCount + 3 do
begin
for j := 0 to AdsData.Fields.Count - 1 do
begin
ExcelWorksheet1.Cells.item[i, j + 1] :=
AdsData.Fields[j].Asstring;
ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
end;
AdsData.Next;
end;
ExcelWorksheet1.Columns.AutoFit;
ExcelWorksheet1.Cells.item[1, 2] := Title;
ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';
ExcelWorksheet1.SaveAs(filename);
Application.Messagebox(pchar('数据成功导出'+ filename),'信息化建设部',mb_Ok);
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Free;
ExcelWorksheet1.Free;
ExcelWorkbook1.Free;
end;
end;

//
6:多谢 无泪这位兄弟 但是我再这个上面的资料里没找到方法才到论坛上麻烦各位的 劳驾各位大侠再帮我想想办法呀
7:ExcelApp.ActiveWorkBook.SaveAs(filename)
8:为什么不用excelapp.saveas(xlsfilename)保存?
9:情况特殊 我用过另存 但程序报错说SAVE方法无效 所以我只有先把文件复制一边,再保存了
10:建议用html保存成.xls文件,这样可不用装excel。

strlst := Tstringlist.Create;
try
strlst.add('');
strlst.add('');
strlst.add('学生列表
');
strlst.add(' 姓名 性别
');
strlst.add(' 李明 男
');
strlst.add(' ');
strlst.add('');
strlst.savetofile('c:/aa.xls');
finally
strlst.Free;
end;
11:这个恐怕不行吧 我的模块已经和别人的合成了 最好是在原来的基础上改,或相近的方法
12:不会吧。。。。。

我一直用的excel保存:
uses ComObj

var
Excel,workbook,sheet: OleVariant;
begin
Excel := CreateOLEObject('Excel.Application');
WorkBook:=excel.WorkBooks.Add;
Sheet:=Excel.Sheets[1];
if SaveDialog1.Execute then
begin
sheet.Cells[1,1].value:='姓名';
Excel.ActiveWorkbook.SaveAs(SaveDialog1.FileName);
WorkBook.close;
Excel.Quit;
excel:=unassigned;
end;
end;
13:是呀 我刚开始也是用的这种方法 搞了几次都是说 SAVE方法无效 不得以 才换路走的 我还想了半天才想到复制这种呆办法 可能是因为环境不同吧
14:而且即使是用这个方法,我也没找出设置保存类型的方法来
15:汗。。。。怎么会 我保存时存成不同的扩展名就是不同的保存类型啊。。。

而且也没遇到save方法无效。。。
16:哦 是就直接写 比如要存为XLS 写成(XLSSAVEDIALOG1.FILENAME)就可以了是吗
17:if SaveDialog1.Execute then
begin
ExcelApplication1:=TExcelApplication.Create(self);
ExcelWorkbook1:=TExcelWorkbook.Create(self);
ExcelWorksheet1:=TExcelWorksheet.Create(self);
Screen.Cursor:=crHourGlass;
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
ExcelWOrkSheet1.Cells.Item[1,1]:='Â¥ÓîÃû³Æ';
....
While not query_printdata.Eof Do
begin
row:=row+1 ;
ExcelWOrkSheet1.Cells.Item[row,4]:=query_printdata.FieldByName('EquipName').AsString;
...
query_printdata.Next;
end;
query_printdata.Close;
end;
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName+'.xls');
ExcelWOrkBook1.Close(false);
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
Screen.Cursor:=crDefault;
end;
18:是啊 就是扩展名啊。。。你可以在savedialog里把扩展名指定 就像excel里那样,然后选一个就行了
19:哦 多谢 多谢 我先试一下 把这个问题解决了 再说
20:to hs-kill
保存时写成XLSSAVEDIALOG1.FILENAME程序报错呀 说不认识XLSSAVEDIALOG1 怎么搞
21:............
XLSSAVEDIALOG1 就是个Tsavedialog 我改了个名字
22:不是吧 算了 反正不写XLS也可以保存为 顺便问一下 我的程序释放不掉 EXCEL的进程 用了
procedure TForm1.FormDestroy(Sender: TObject);
begin

EXCELAPP:= Unassigned;
end;
也不行 请指点指点
23:像我写的这样?你用的是OLE吗?
WorkBook.close;
Excel.Quit;
excel:=unassigned;
24:啊 还有 那个XLSSAVEDIALOG1.FILENAME是什么?好象不是我写的吧
这几天忙晕了 没仔细看
我的代码是这个:
uses ComObj

var
Excel,workbook,sheet: OleVariant;
begin
Excel := CreateOLEObject('Excel.Application');
WorkBook:=excel.WorkBooks.Add;
Sheet:=Excel.Sheets[1];
if SaveDialog1.Execute then
try
sheet.Cells[1,1].value:='姓名';
Excel.ActiveWorkbook.SaveAs(SaveDialog1.FileName);
finally
WorkBook.close;
Excel.Quit;
excel:=unassigned;
end;
end;
25:是的 是createoleobject 我去试试 多谢了
26:XLSSAVEDIALOG1.FILENAME是我写的 错了 不知加扩展名在那里加 所以瞎搞一通
27:TO hs-kill, 多谢多谢 能交个 朋友吗 我的QQ 41609594
28:呵呵 当然没问题 17948876
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值