MyExcel:=createoleobject('Excel.Application');
MyWorkbook:=MyExcel.Workbooks.Open(datamodule2.OpenDialog1.FileName);
MyExcel.Visible:=false;
myworksheet1:=myexcel.activesheet;
for bom_cell:=1 to myworksheet1.usedrange.columns.Count do
begin
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='类别' then
fuxiang_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='产品编码' then
type_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='型号' then
name_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='出口国家' then
guige_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='周计划' then //材料
cailiao_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='上次欠产' then
danwei_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='单位' then
danhao_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='当日' then
gongxu_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='累计' then
plat_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='备注' then
danhao_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='欠产' then
gongxu_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='分厂名称' then
plat_field:=bom_cell;
if varastype(myworksheet1.cells.item[1,bom_cell],varstring)='数据日期' then
plat_field:=bom_cell;
end;
//执行存储过程
dm.adoq1.Close;
dm.adoq1.SQL.Clear;
dm.adoq1.SQL.add('');
dm.adoq1.ExecSQL;
try For bom_cell:=2 To myworksheet1.usedrange.Rows.Count do
begin
dm.ADOQ1.Close;
dm.ADOQ1.SQL.Clear;
上面说明了怎么取excel中的数据
//***************************************************************************************************
一 引言
C++ builder 5.0是Inprise公司推出的基于C++语言的可视化开发语言,不仅具有新颖的可视化设计工具,还配有数据库引擎,可以通过SQL连接或ODBC访问多种数据库,并具有开发基于Client/Server模式的数据库应用程序的能力。当我们进行数据库软件开发的时候,一般要进行大量报表设计,尤其当涉及到设计多重报表或交叉报表时,我们会觉得力不从心。利用EXCEL强大的电子表格处理功能,可以解决C++ Builder 自带报表工具功能少的缺陷。
C++ Builder调用Excel常用的方法有两种:一种是利用OLE技术调用Excel。OLE(对象的连接和嵌入)是微软公司提出的标准,它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法。第二种是利用ODBC数据库技术调用Excel。第一种方法比较简单,方便,本文讨论的是第一种方法。
例如对于VB的提交语句:
Ex.ActiveWorkBook.ActiveSheet.Cells(1,2).Value=3
为便于理解在C++Builder对应的语句可分解为如下四句:
Variant t1=Ex.OlePropertyGet("ActiveWorkBook");
Variant t2=t1.OlePropertyGet("ActiveSheet");
Variant t3=t2.OlePropertyGet("Cells,1,2);
t3.OlePropertySet("Value",3);
可去掉中间变量将这四句合为一句,就是:
Ex.PG("ActiveWorkBook").PG("ActiveSheet").
PG("Cells",1,2).PS("Value",3);
我们将下面的VB程序片段改成对应的C++Builder程序以供参考:
Private Sub Command1_Click() ' Visual Basic程序片段
Dim Ex As Object,Wb As Object, Sh1 As Object
Set Ex = CreateObject("Excel.Application")
Ex.WorkBooks.Open("c:\book1.xls")
Set Wb = Ex.Activeworkbook
Set Sh1 = Wb.ActiveSheet
Text1.Text = Sh1.Cells(1, 1).Value
For i = 1 To 10: For j = 1 To 10
Sh1.Cells(i, j).Value = i * 100 + j
Next j: Next i
Wb.save: Wb.Close: Ex.Quit
End Sub ' - - - - - -- - - - - - - - - - -