读书人

Delphi怎么取得excel表格中某格子里

发布时间: 2012-10-15 09:45:24 作者: rapoo

Delphi如何取得excel表格中某格子里的函
Delphi如何取得excel表格中某格子里的函

[解决办法]
procedure TfmMain.FormCreate(Sender: TObject);
const
xlWorksheet=-4167;
var
i:Integer;
sFilePath:String;
xlsApp:Variant;
begin
try
try
//sFilePath := '\\Datacenter\Public\PaUser\'+FormatDateTime('yyyy',Date)+'年第'+FloatToStr(WeekOfTheYear(Date))+'周.xls';
xlsApp:=CreateOLEObject('Excel.Application');
xlsApp.Workbooks.Add(xlWorksheet);
xlsApp.ActiveWorkbook.ActiveSheet.Name:=FormatDateTime('yyyy',Date)+'年第'+FloatToStr(WeekOfTheYear(Date))+'周';
//行
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,1].Value:='分';
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,2].Value:='通日期';
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,3].Value:='';
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,4].Value:='';
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,5].Value:='';
//行方式
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,1].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,2].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,3].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,4].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[1,5].HorizontalAlignment:=3;

xlsApp.ActiveWorkbook.ActiveSheet.Rows[1].RowHeight:=0.8/0.035; //第一行行高
xlsApp.ActiveWorkbook.ActiveSheet.Range['A1:E1'].Borders[4].Weight:=2;//第一行下
xlsApp.ActiveWorkbook.ActiveSheet.Rows[1].Font.Color:=clRed; //第一行字色
xlsApp.ActiveWorkbook.ActiveSheet.Rows[1].Font.Bold :=True; //
with ADS_GetTELRec do
begin
Active:=False;
CommandText:=' Select ExtentionNo,[DateTime],Long,a.TelNo,'+
' TelKind=Case When IsNull(b.TelKind,'''')<>'''' Then TelKind Else ''私人'' end'+
' From Hr..Call_list a Left Outer Join Call_TelNumber b On a.TelNo=b.TelNo '+
' where Year([DateTime])=Year(GetDate()) and DATEPART(Week,[DateTime])=DATEPART(Week,GetDate()) '+
' and ExtentionNo not in (''20'',''15'',''16'',''17'',''18'',''21'',''22'',''28'') '+
' and Convert(Int,SubString(Long,1,CHARINDEX(''-'',Long)-1))>=3 '+
' Order By ExtentionNo ';
Active:=True;
First;
i:=1;
while not eof do
begin
i:=i+1;
xlsApp.ActiveWorkbook.ActiveSheet.rows[i].select;

xlsApp.ActiveWorkbook.ActiveSheet.cells[i,1].Value:=FieldByName('ExtentionNo').AsString;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,1].NumberFormatLocal:='G/通用格式';
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,1].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,1].FormulaR1C1:=xlsApp.ActiveWorkbook.ActiveSheet.cells[i,1].Value;

xlsApp.ActiveWorkbook.ActiveSheet.cells[i,2].Value:=FieldByName('DateTime').AsDateTime;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,2].NumberFormatLocal:='dd.mm.yyyy hh:mm:ss';
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,2].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,2].FormulaR1C1:=xlsApp.ActiveWorkbook.ActiveSheet.cells[i,2].Value;

xlsApp.ActiveWorkbook.ActiveSheet.cells[i,3].Value:=''''+FieldByName('Long').AsString;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,3].NumberFormatLocal:='@';
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,3].HorizontalAlignment:=3;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,3].FormulaR1C1:=xlsApp.ActiveWorkbook.ActiveSheet.cells[i,3].Value;

xlsApp.ActiveWorkbook.ActiveSheet.cells[i,4].Value:=''''+FieldByName('TelNo').AsString;


xlsApp.ActiveWorkbook.ActiveSheet.cells[i,4].NumberFormatLocal:='@';
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,4].FormulaR1C1:=xlsApp.ActiveWorkbook.ActiveSheet.cells[i,4].Value;

xlsApp.ActiveWorkbook.ActiveSheet.cells[i,5].Value:=FieldByName('TelKind').AsString;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,5].NumberFormatLocal:='@';
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,5].HorizontalAlignment:=4;
xlsApp.ActiveWorkbook.ActiveSheet.cells[i,5].FormulaR1C1:=xlsApp.ActiveWorkbook.ActiveSheet.cells[i,5].Value;

Next;
end;
xlsApp.ActiveWorkbook.ActiveSheet.Columns[1].ColumnWidth := 5;
xlsApp.ActiveWorkbook.ActiveSheet.Columns[2].ColumnWidth := 18;
xlsApp.ActiveWorkbook.ActiveSheet.Columns[3].ColumnWidth := 8;
xlsApp.ActiveWorkbook.ActiveSheet.Columns[4].ColumnWidth := 15;
xlsApp.ActiveWorkbook.ActiveSheet.Columns[5].ColumnWidth := 15;
sFilePath := '\\Datacenter\Public\PaUser\'+FormatDateTime('yyyy',Date)+'年第'+FloatToStr(WeekOfTheYear(Date))+'周.xls';
xlsApp.Visible := False;
xlsApp.DisplayAlerts:=False;
xlsApp.ActiveWorkbook.SaveAs(sFilePath);
xlsApp.ActiveWorkBook.Saved := True;
xlsApp.WorkBooks.Close;
end;
//以下理送件
with SP_SendMail do
begin
close;
Parameters.ParamByName('@Year').value:= FormatDateTime('yyyy',Date);
Parameters.ParamByName('@Wek').value := FloatToStr(WeekOfTheYear(Date));
ExecProc;
end;
if FileExists(sFilePath) then DeleteFile(sFilePath);
except
ShowMessage(Exception(ExceptObject).Message);
end;
finally
xlsApp.Quit;
Application.Terminate;
end;
end;
[解决办法]
没研究,学习一下

[解决办法]
showmessage(Excelid.worksheets[1].Range['A5'].Formula);

读书人网 >.NET

热点推荐