DELPHI中 EXCEL和SQLSEVER2000互相导入导出要怎么样才能实现啊??
我之前也自己在网上搜了好多帖 但是都是只有代码,具体用什么控件以及怎么实现都没有讲.
就像Procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
procedure WriteStringCell(AValue: string);
procedure WriteStringCell(AValue: string);
Procedure WriteExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
Procedure ReadExcelFile(FileName: string);
这些东西我都不知道是怎么加到代码里面去的,我看了一下每个控件EVENT 里面好像都没有这些啊.
哪位大虾能给出详细的文档?? 或者有自己的方法能实现EXCEL和SQLSEVER2000导入导出也可以啊.最好能说的详细点.
我之前也自己在网上搜了好多帖 但是都是只有代码,具体用什么控件以及怎么实现都没有讲.
就像Procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
procedure WriteStringCell(AValue: string);
procedure WriteStringCell(AValue: string);
Procedure WriteExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
Procedure ReadExcelFile(FileName: string);
这些东西我都不知道是怎么加到代码里面去的,我看了一下每个控件EVENT 里面好像都没有这些啊.
哪位大虾能给出详细的文档?? 或者有自己的方法能实现EXCEL和SQLSEVER2000导入导出也可以啊.最好能说的详细点.
解决方案 »
- 审核
- 哪位大虾有时间进来看看这个图像全部变黑的问题
- SQLSERVER如何去访问其它类型的数据库?
- 生手问一个编译的小问题
- SQLServe中的SubString()功能,在Access中要用什么来表达。
- 一个关于修改系统单元文件的问题,详细请进。
- 怎样在MS SQL注册一个"扩展存储过程"?
- 请问BDE怎么打包?
- 请问怎样让edit里只能输入数字????
- 怎样实现在COMBOBOX中(有字符串)任意定位光标位置????急!!!!!!!!!
- .NET转DELPHI,请问过程是不是不可设置为virtual
- 问题: 关于Free, FreeAndNil, Nil的判断,构造函数中产生异常? 非常困惑人
2/、用一个adoquery之类的组件连接数据库,用ole或者组件的办法连接excel,然后一个读,一个写
小弟接触DELPHI时日尚浅,所以还有好多不懂的地方啊.有不有详细的过程,包括控件和代码.谢谢了啊!!
还有我的另外一个疑问能不能解答啊??
就是procedure WriteStringCell(AValue: string);的问题...
你的代码不能直接应用
他的意思是EXCEL可以在SQL里导入,再用DELPHI里的ADOQUERY进行联接
if Trim(MyWorkBook.WorkSheets[1].Cells[i,1])<>'' then do
begin
ADOQuery1.SQL.Add('insert into B(BID,Bcaption,DFF,TF)');
ADOQuery1.SQL.Add('values('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,1]))+''','''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,2]))+''','''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,5]))+''',cast('''+uppercase(Trim(MyWorkBook.WorkSheets[1].Cells[i,6]))+''' as int))');
ADOQuery1.ExecSQL;
i:=i+1;
end从SQL Server 2000导出到Excel直接由DBGrid导出为Excel文件的代码如下:uses ComObj;procedure TSearchinforfrm.Button11Click(Sender: TObject);
var
eclApp,WorkBook:olevariant;
xlsFileName:string;
i,j:integer;
begin if SaveDialog1.Execute then
xlsFileName:=SaveDialog1.FileName; try
eclApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleObject('Excel.Sheet');
except
Application.MessageBox('系统没有安装Microsoft Excel','Microsoft Excel',MB_OK+MB_ICONWarning);
Exit;
end; try
WorkBook:=eclApp.workbooks.Add;
for i:=0 to DBGrid1.Columns.Count-1 do
begin
eclApp.Cells(1,i+1):=DBGrid1.Columns[i].FieldName;
end; DBGrid1.DataSource.DataSet.First;
j:=2;
while not DBGrid1.DataSource.DataSet.Eof do
begin
for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
begin
eclApp.Cells(j,i+1):=DBGrid1.DataSource.DataSet.Fields[i].Value;
end;
DBGrid1.DataSource.DataSet.Next;
inc(j);
end; WorkBook.SaveAS(xlsFileName);
WorkBook.close;
except
ShowMessage('文件导出失败!');
Exit;
end;
Application.MessageBox('保存成功!','恭喜',MB_OK + MB_ICONINFORMATION);
end;直接调用EXCEL控件可能会出现这样的问题!最好用代码实现导出功能!uses
ComObj, Excel2000, OleServer;procedure TPCodemainfrm.SaveToXlsClick(Sender: TObject);
var
i,j:integer;
s,t:string;
Excelid: Variant;
begin if ComboBox1.Text='' then
begin
with dms.AdoRecords do
begin Close;
SQL.Clear;
SQL.Text := 'exec SearchRecords';
//SQL.LoadFromFile(WPath+'\SQL\SearchRecords.sql');
Open; try
Excelid:=CreateOleObject('Excel.Application');
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
end; Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.worksheets[1].range['A1:V1'].Merge(True); Excelid.worksheets[1].range['A1:V1'].HorizontalAlignment := $FFFFEFF4;
Excelid.WorkSheets[1].Cells[1,1].Value :='P-Codes代码浏览表'; Excelid.worksheets[1].range['A2:V2'].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].range['A2:V2'].VerticalAlignment := $FFFFEFF4; Excelid.worksheets[1].range['A1:V2'].font.bold:=true; Excelid.worksheets[1].Range['A2:V2'].Font.Name:='宋体';
Excelid.worksheets[1].Range['A2:V2'].Font.Size := 12; Excelid.worksheets[1].Columns[1].ColumnWidth := 5;
Excelid.worksheets[1].Columns[2].ColumnWidth := 6; j:=2; Excelid.WorkSheets[1].Cells[j,1].Value := '编号';
Excelid.WorkSheets[1].Cells[j,2].Value := 'P11**'; i:=3;
dms.AdoRecords.First;
while not dms.AdoRecords.Eof do
begin
Excelid.WorkSheets[1].Cells[i,1].Value := Trim(dms.AdoRecords.FieldByName('ident').AsString);
Excelid.WorkSheets[1].Cells[i,2].Value := Trim(dms.AdoRecords.FieldByName('a1').AsString);
Inc(i);
dms.AdoRecords.Next;
end;
end;
s:='A3:V'+IntToStr(dms.AdoRecords.RecordCount+3);
Excelid.worksheets[1].Range[s].Font.Name := '宋体';
Excelid.worksheets[1].Range[s].Font.Size := 10;
Excelid.worksheets[1].Range[s].Borders.LineStyle := 1; end;
end;
要详细过程(包括控件,控件的属性还有代码).
谁教我把这个问题搞定了50分就是你的了!