如何将控件数据导出到EXCEL文件(50分)

  • 主题发起人 主题发起人 zwp888
  • 开始时间 开始时间
Z

zwp888

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将控件数据导出到EXCEL文件:

比如有个窗口,有五个GroupBox,每隔GroupBox中有Label,Edit,edit中都有数据.

请富翁们提供一下代码,菜鸟在此谢谢了!!!
急!!在线等答案
 
请楼主说得详细点
 
procedure Tdjyl1.TeButton2Click(Sender: TObject);
Var
id: String;
Excelid: Variant;
begin
Try
Excelid := CreateOleObject('Excel.Application');
Except
On Exception Do
Raise exception.Create('xlsファイルを作成できません、EXCELを取付けるかどうか確認してください!')
End;
Excelid.DisplayAlerts := False;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.Caption := '設計予算書';
Excelid.WorkSheets[1].Name := '設計予算書';
Excelid.ActiveWindow.DisplayZeros := False;
Peedy.Play('Search');
Excelid.WorkSheets[1].Range['B1:J1'].Merge(True);
Excelid.WorkSheets[1].Cells[1,2].Value := '設  計  予  算  書';
Excelid.WorkSheets[1].Range['B1:J1'].HorizontalAlignment := xlCenter;
Excelid.WorkSheets[1].Range['B1:J1'].Borders[xlEdgeBottom].Weight := xlThin;
Excelid.WorkSheets[1].Range['B1:J1'].Font.Size := 14;
Excelid.WorkSheets[1].Range['B1:J1'].RowHeight := 33;
Excelid.WorkSheets[1].Cells[3,2].Value := '工事件名';
Excelid.WorkSheets[1].Range['B3'].Font.Size := 14;
id := DataModulem.ADOQuerym.FieldValues['id'];
Excelid.WorkSheets[1].Cells[4,3].Value := DataModulem.ADOQuerym.FieldValues['gsjm'];
Excelid.WorkSheets[1].Range['C4'].Font.Size := 14;
Excelid.WorkSheets[1].Cells[3,9].Value := 'G M';
Excelid.WorkSheets[1].Range['I3'].Font.Size := 11;
Excelid.WorkSheets[1].Range['I3'].HorizontalAlignment := xlCenter;
Excelid.WorkSheets[1].Range['I3'].Borders[xlEdgeLeft].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I3'].Borders[xlEdgeTop].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I3'].Borders[xlEdgeBottom].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I3'].Borders[xlEdgeRight].Weight := xlMedium;
Excelid.WorkSheets[1].Cells[4,2].Value := '    ';
Excelid.WorkSheets[1].Range['I4:I5'].Borders[xlEdgeLeft].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I4:I5'].Borders[xlEdgeBottom].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I4:I5'].Borders[xlEdgeRight].Weight := xlMedium;
Excelid.WorkSheets[1].Range['I4:I5'].MergeCells := True;
Excelid.WorkSheets[1].Cells[6,4].Value := '請負金額';
Excelid.WorkSheets[1].Range['D6:E6'].Merge(True);
Excelid.WorkSheets[1].Range['F6:G6'].Merge(True);
Excelid.WorkSheets[1].Range['F6:G6'].NumberFormatLocal := '#,##0';
Excelid.WorkSheets[1].Range['F6'].HorizontalAlignment := xlRight;
Excelid.WorkSheets[1].Cells[6,6].FormulaR1C1 := '=SUM(R[18]C[3])';
Excelid.WorkSheets[1].Range['H6'].HorizontalAlignment := xlLeft;
Excelid.WorkSheets[1].Cells[6,8].FormulaR1C1 := '円';
Excelid.WorkSheets[1].Range['F6:H6'].Borders[xlEdgeBottom].Weight := xlThin;
Excelid.WorkSheets[1].Range['D6:H6'].Font.Size := 14;
Excelid.WorkSheets[1].Range['B7:J7'].Borders[xlEdgeBottom].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B8:J8'].Merge(True);
Excelid.WorkSheets[1].Cells[8,2].Value := '内      訳';
Excelid.WorkSheets[1].Range['B9:E9'].Merge(True);
Excelid.WorkSheets[1].Cells[9,2].Value := '工事項目';
Excelid.WorkSheets[1].Cells[9,6].Value := '数量';
Excelid.WorkSheets[1].Cells[9,7].Value := '単位';
Excelid.WorkSheets[1].Cells[9,8].Value := '単価';
Excelid.WorkSheets[1].Cells[9,9].Value := '金額';
Excelid.WorkSheets[1].Cells[9,10].Value := '適用';
Excelid.WorkSheets[1].Range['B9:J9'].Borders[xlEdgeBottom].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B8:J9'].HorizontalAlignment := xlCenter;
Excelid.WorkSheets[1].Range['B11:C11'].Merge(True);
//Excelid.WorkSheets[1].Cells[11,2].Value := 'Ⅰ. 直接工事費';
//Excelid.WorkSheets[1].Range['B12:C12'].Merge(True);
Excelid.WorkSheets[1].Range['I12:I24'].NumberFormatLocal := '#,##0';
//Excelid.WorkSheets[1].Cells[11,9].FormulaR1C1 := '=SUM(R[1]C,R[2]C,R[3]C)';
Excelid.WorkSheets[1].Cells[12,2].Value := '   1)労務費';
Excelid.WorkSheets[1].Range['B14:C14'].Merge(True);
Excelid.WorkSheets[1].Cells[12,9].Value := DataModulem.ADOQuerym.FieldValues['lwf'];
Excelid.WorkSheets[1].Cells[14,2].Value := '   2)材料費';
Excelid.WorkSheets[1].Range['B16:C16'].Merge(True);
Excelid.WorkSheets[1].Cells[14,9].Value := DataModulem.ADOQuerym.FieldValues['clf']*1.19;
Excelid.WorkSheets[1].Cells[16,2].Value := '   3)特別経費';
Excelid.WorkSheets[1].Cells[16,9].Value := DataModulem.ADOQuerym.FieldValues['tbjf']*1.19;
//Excelid.WorkSheets[1].Cells[16,2].Value := 'Ⅱ.共通費';
//Excelid.WorkSheets[1].Range['I16'].NumberFormatLocal := '#,##0';
//Excelid.WorkSheets[1].Cells[16,9].FormulaR1C1 := '=SUM(R[-5]C*0.04)';
//Excelid.WorkSheets[1].Cells[18,2].Value := 'Ⅲ.諸経費';
//Excelid.WorkSheets[1].Range['I18'].NumberFormatLocal := '#,##0';
//Excelid.WorkSheets[1].Cells[18,9].FormulaR1C1 := '=SUM(R[-7]C*0.15)';
Excelid.WorkSheets[1].Cells[24,8].Value := '合計';
Excelid.WorkSheets[1].Cells[24,9].FormulaR1C1 := '=SUM(INT((R[-12]C+R[-10]C+R[-8]C)/100)*100)';
Excelid.WorkSheets[1].Range['I11:I24'].ShrinkToFit := True;
Excelid.WorkSheets[1].Range['B1:J34'].Font.Name := 'MS P明朝';
Excelid.WorkSheets[1].Range['B1:J34'].Borders[xlEdgeLeft].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B1:J34'].Borders[xlEdgeTop].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B1:J34'].Borders[xlEdgeBottom].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B1:J34'].Borders[xlEdgeRight].Weight := xlMedium;
Excelid.WorkSheets[1].Range['B10:E34'].Borders[xlEdgeRight].Weight := xlThin;
Excelid.WorkSheets[1].Range['B10:E34'].Borders[xlInsideHorizontal].Weight := xlThin;
Excelid.WorkSheets[1].Range['F10:J34'].Borders[xlInsideVertical].Weight := xlThin;
Excelid.WorkSheets[1].Range['F10:J34'].Borders[xlInsideHorizontal].Weight := xlThin;
Excelid.Worksheets[1].Range['A2:J34'].RowHeight := 18;
Excelid.WorkSheets[1].PageSetup.CenterVertically := True;
Excelid.WorkSheets[1].PageSetup.CenterHorizontally := True;
Excelid.WorkSheets[1].PageSetup.PrintArea := '$B$1:$J$34';
Peedy.Speak('検索が終わりました!', '');
end;
这是生成excel的,你可以在需要添写数据的地方 给单元格进行复职就行了吧
 
不用那么麻烦,用ExpressSpreadSheet控件,直接写入结果保存文件就可以了.

具体操作可参考ExpressSpreadSheet的DEMO
 
To: ydejun
请提供ExpressSpreadSheet的DEMO,谢谢!!
 
To:maldini610

USES里应该加什么头文件,我正在测试,测试成功散分,谢谢!!!
另外,我程序中没用到ADO,其中 id := DataModulem.ADOQuerym.FieldValues['id'];
Excelid.WorkSheets[1].Cells[4,3].Value := DataModulem.ADOQuerym.FieldValues['gsjm'];
可以删除吧
 
To:maldini610

谢谢了!

另外,请教一下,Delphi中代码怎样实现access数据库的备份及恢复
 
后退
顶部