如何把excel导入到数据库中

时间:2021-06-21 20:42:45
目的:通过PB导入excel到相应的数据库表中。

思路:先选择excel文件,加载到DataWindow,再插入到表中。

这个思路是否可行?

6 个解决方案

#1


按这个思路,
我建了一个应用包含一个事件 
open(w_main) //w_main
一个w_main窗口
有一个DataWindowd控件w_product
一个cb_1按钮 clicked事件:
long   numcols,numrows,c,r
OLEObject   xlapp,xlsub
int   ret
//定义变量 

numcols   =   long(dw_product.Object.DataWindow.Column.Count) 
//设置行号和列号 
numrows   =   dw_product.RowCount() 
//获得行数 
xlApp   =   Create   OLEObject 
//创建OLE对象 

ret   =   xlApp.ConnectToNewObject(   "Excel.Sheet "   ) 
if   ret   <   0     then 
MessageBox( "连接Excel程序失败! ",string(ret)) 
        return 
end   if 
//连接Excel,并检验返回值 

xlApp.Application.Workbooks.Open( "E:\ybb.xls ") 
//打开一个特定的Excel文件 
xlApp.Application.Visible   =   true 
//使该Excel文件可视 
xlsub   =   xlapp.Application.ActiveWorkbook.Worksheets[1] 
//确定第一个工作簿 

For   c   =   1   to   numcols 
For   r   =   1   to   numrows 
          xlsub.cells[r,c]   =   dw_product.object.data[r,c]     
      Next 
Next 
//循环发送数据 

xlApp.DisConnectObject() 
Destroy   xlapp 
//断开连接 



运行报错:
PowerBuilder Application Execution Error (R0002)
---------------------------
Application terminated.

Error: Null object reference at line 6 in clicked event of object cb_1 of w_main.

#2


给你一个函数,直接调用即可导入xls、text或dbf文件中的数据。当然前提是数据窗口列序要和excel文件的列序相同。你可以自己起个函数名:
string path,filename
integer value,result,li_startrow

//ab_flag boolean 传入是否有标题行,有=true,无=false
//idw_dw datawindow 数据窗口
//返回 long

if ab_flag then
li_startrow = 2
else
li_startrow = 1
end if

value = GetFileOpenName("请选择欲导入的文件",path,filename,"xls","xls Files (*.xls),*.xls,Text Files (*.TXT),*.TXT,DBF Files (*.DBF),*.DBF")

if value<>1 then return -1

if right(path,3)='xls' or right(path,3)='XLS' then 
 OLEObject ObjExcel
 ObjExcel = CREATE OLEObject
 result = ObjExcel.ConnectToNewObject( "excel.application")
  if result <> 0 then 
  messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!") 
   Return  -1
  else
   ObjExcel.Workbooks.Open(path)
  
//   ObjExcel.activeworkbook.sheets("sheet2").select

   string ls_copy
  int i
     if ObjExcel.ActiveSheet.Cells.Copy = true then 
          ObjExcel.Application.Visible = false
          idw_dw.SetTransObject(SQLCA)
          i =  idw_dw.ImportClipboard(li_startrow)     //将系统剪切版上的内容粘贴到数据窗口中,其中2为起始行参数
 choose case i
case -1
MessageBox('警告','Excel文件中没有记录行或者起始行值大于字符串中的行数。')
case  -3
MessageBox('警告','无效变元。')
case -4
MessageBox('警告','无效输入。')
case -13
MessageBox('警告','输入的数据不支持数据窗口的类型。')
case -14
MessageBox('警告','错误解析数据窗口嵌套。')
end choose
          Clipboard("")                 //清空剪切版上的内容
          ObjExcel.Quit()
          ObjExcel.DisconnectObject()     //断开与OLE的连接
          Destroy ObjExcel 
 return i
      else
          messagebox("提示","您的EXCEL不支持此功能,请检查EXCEL版本,建议使用OFFICE-EXCEL")
     end if
end if 
elseif right(path,3)='txt' or right(path,3)='TXT' then
i = idw_dw.importfile(text!,path,li_startrow)
return i
elseif right(path,3)='dbf' or right(path,3)='DBF' then
  i = idw_dw.importfile(DBase3!,path,li_startrow)
 return  i
else
return -1
end if

#3


序号 功能 代码案例
"String ls_FileName , ls_DirFile
string is_dir
integer li_value
li_value = GetFileOpenName(""请选择excel文件名"", ls_DirFile, ls_FileName, ""xls"", ""Excell Files (*.xls), *.xls"")"
"IF li_value=1 THEN
 is_dir = left(ls_DirFile,pos(ls_DirFile,ls_FileName) - 1)
 sle_EA.text = ls_DirFile 
 //获取Excel文件名称
 If lastpos( ls_DirFile, '.xls'  ) = 0 Then
 End If  
 is_xlsName = midw( ls_DirFile, lastpos( ls_DirFile, '\' )+1, lastpos( ls_DirFile, '.xls'  ) - lastpos( ls_DirFile, '\' ) - 1 )"
"OLEObject  OLE_ExcelA  
OLE_ExcelA = Create  OLEObject  
long ll_error
ll_error = OLE_ExcelA.ConnectToNewObject(""excel.Application"")
OLE_ExcelA.visible = true "
"OLE_ExcelB.Workbooks.Open( sle_eb.text )
mle_2.text = mle_2.text + '成功打开 '+ sle_eb.text +char(13)+char(10)
ll_sumSheet = OLE_ExcelB.Worksheets.count
If ll_sumsheet < 1 Then
 OLE_ExcelB.quit() 
 OLE_ExcelB.Workbooks.close 
 OLE_ExcelB.DisConnectObject()
 destroy  OLE_ExcelB;"
"  ll_rowA = OLE_ExcelA.ActiveWorkbook.Activesheet.UsedRange.rows.Count 
 ll_columnA = OLE_ExcelA.ActiveWorkbook.Activesheet.UsedRange.columns.Count"
"ld_sph = double( OLE_ExcelA.cells(  ll_num , ll_start_l ).value )  
  ld_cyl = double( OLE_ExcelA.cells(  ll_num , ll_start_l +1 ).value )"
"OLE_ExcelA.quit() 
OLE_ExcelA.Workbooks.close 
OLE_ExcelA.DisConnectObject()
destroy  OLE_ExcelA"
dw_6.saveas( ls_path , EXCEL5! , true )
"OLE_ExcelB.Worksheets( 1 ).Activate  
OLE_ExcelB.ActiveSheet.Columns(1).ColumnWidth=10  
OLE_ExcelB.ActiveSheet.Columns(2).ColumnWidth=5 "
"OLE_ExcelB.cells( 1,16 ).value = '总价1'
OLE_ExcelB.cells( 1,17 ).value = '总价2'"
" OLE_ExcelB.cells( k + 1 , 16 ).value = dw_4.describe(""evaluate('sum(sumprice for all)', 1)"") 
 OLE_ExcelB.cells( k + 1 , 17 ).value = dw_4.describe(""evaluate('sum(  zongjia1  for all )', 1)"")
 OLE_ExcelB.cells( k + 1 , 18 ).value = dw_4.describe(""evaluate('sum(  zongjia2  for all )', 1)"")"
"OLE_ExcelB.Columns(""P:P"").Select
OLE_ExcelB.Selection.NumberFormatLocal = ""#,##0.00_ """
"OLE_ExcelA.ActiveSheet.Columns(22).Delete
OLE_ExcelA.ActiveSheet.Columns(22).Delete"
"OLE_ExcelA.ActiveSheet.Range(""F2:F2"").Select
OLE_ExcelA.ActiveWindow.FreezePanes = True"
"string ls_range
ls_range = 'A1:'+'W'+string( dw_1.rowcount( ) + 2 )
OLE_ExcelA.Range( ls_range ).WrapText = true"
"//  OLE_ExcelB.range( 'A1:I1' ).select
//  OLE_ExcelB.range( 'A1:I1' ).merge 
//  OLE_ExcelB.range( 'A1:I1' ).HorizontalAlignment  = 7"
"//  OLE_ExcelB.range( 'A3:I4' ).VerticalAlignment  = 2
//      OLE_ExcelB.range( 'A3:I4' ).WrapText = true
//  OLE_ExcelB.range( 'A3:I4' ).HorizontalAlignment  = 7
//  //OLE_ExcelB.Range( 'A3:I4' ).Interior.Color = rgb( 128, 255, 255 )"
"ls_rangB = 'A5:I'+string(ll_rowA)
OLE_ExcelB.range(  ls_rangB ).VerticalAlignment  = 2
OLE_ExcelB.range(  ls_rangB ).WrapText = true
OLE_ExcelB.Range( ls_rangB ).Borders( 3 ).LineStyle = 1
OLE_ExcelB.Range( ls_rangB ).Borders( 3 ).Weight = 2"
" ls_range = 'A1:'+'J'+string(ll_sumrowA)
 OLE_ExcelA.ActiveSheet.Range(ls_range).Copy  
 OLE_ExcelA.Worksheets( 1 ).Activate 
 ls_range = 'A'+string(ll_sumrowB+1)      //'J'+string(ll_ColA)
 OLE_ExcelA.ActiveSheet.Range( ls_range ).PasteSpecial "
OLE_ExcelA.ActiveSheet.Range( ls_range ).Interior.Color  = rgb(0,123,256 )
1.创建Excel物件  eole=CREATEOBJECT(′Excel.application′)  
2.添加新工作簿  eole.Workbooks.add  
3.设置第3個工作表为工作表  eole.Worksheets(″sheet3″).Activate  
4.打开指定工作簿  eole.Workbooks.Open(″c:\temp\ll.xls″)  
5.显示Excel窗口 eole.visible=.t.   /true    
6. 更改Excel标题栏目  eole.Caption=″PB 调用Microsoft  Excel″  
7.给单元格赋值  eole.cells(1,4).value= XM / 字符时间数字 
8.设定指定列的宽度(单位:字节)  eole.ActiveSheet.Columns(1).ColumnWidth=5  
9.设定指定行的高度(单位:磅)  eole.ActiveSheet.Rows(1).RowHeight=1/0.035   (设定行高为1cm,1磅=0.035cm )  
10.在第18行之前插入分页符  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1  
11.在第4列之前刪除分页符  eole.ActiveSheet.Columns(4).PageBreak=0  
12.指定边框线宽度(Borders参数如下)  ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3  
13.设置四个边框线条的类型  eole.ActiveSheet.Range(″b3:d3″).Borders(2).Linestyle=1   (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;Linestyle值:1与7-细实、2-细虚、4-点虚、9-双细实线 )  
14.设置页眉  eole.ActiveSheet.PageSetup.CenterHeader=″报表1″  
15.设置页脚  eole.ActiveSheet.PageSetup.CenterFooter=″第&P頁″  
16.设置页眉到頂端边为距2cm  eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035  
17.设置页脚到底边距为3cm  eole.ActiveSheet.PageSetup.FooterMargin=3/0.035  
18.设置顶边距为2cm  eole.ActiveSheet.PageSetup.TopMargin=2/0.035  
19.设置底边距为4cm  eole.ActiveSheet.PageSetup.BottomMargin=4/0.035  
20.设置左边距为2cm  veole.ActiveSheet.PageSetup.LeftMargin=2/0.035  
21.设置右邊距为2cm  eole.ActiveSheet.PageSetup.RightMargin=2/0.035  
22.设置页面水平居中  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.  
23.设置页面垂直居中  eole.ActiveSheet.PageSetup.CenterVertically=.t.  
24.设置页脚纸张大小(1-窄行8511  39-宽行1411)  eole.ActiveSheet.PageSetup.PaperSize=1  
25.列印单元格网线  eole.ActiveSheet.PageSetup.PrintGridlines=.t.  
26.拷贝整個工作表  eole.ActiveSheet.UsedRange.Copy  
27.拷贝指定区域  eole.ActiveSheet.Range(″A1:E2″).Copy  
28.粘贴  eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial  
29.在第2行之前插入一行  eole.ActiveSheet.Rows(2).Insert  
30.在第2列之前插入一列  eole.ActiveSheet.Columns(2).Insert  
31.设置自字体  eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″
32.设置字体大小  eole.ActiveSheet.Cells(1,1).Font.Size=25  
33.设置字体为斜体  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.  
34.设置整列字体为粗体  eole.ActiveSheet.Columns(1).Font.Bold=.t.  
35.清除单元格  eole.ActiveSheet.Cells(1,4).ClearContents  
36.列印预览工作表  eole.ActiveSheet.PrintPreview  
37.列印輸出工作表  eole.ActiveSheet.PrintOut  
38.工作表另爲  eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)  
39.放弃存档  eole.ActiveWorkbook.saved=.t.  
40.关闭工作簿  eole.Workbooks.close  
41.退出Excel  eole.quit  
42.  合并单元格内取其左上角的单元格中的数值 < > 写入数据的时候随便写其中的任意格,最后数据存放在左上角的格子中
43.冻结窗口  Range("A2:A4").Select   ActiveWindow.FreezePanes = True
/* 4.Workbook对象
  该对象代表工作簿。
  (1)Styles属性:返回Styles集合,代表指定工作簿的所有样式。
  (2)Add方法:用于新建工作簿,并将其设置为活动工作簿。
  (3)Open方法:用于打开工作簿。
  (4)OpenText方法:用于载入文本文件,并将其进行分列处理,然后在工作表中插入经过分列处理的文本数据。
  5.Worksheet对象
  该对象代表工作表,通过“Worksheets(index)”的语法可获取Worksheet对象,其中index参数工作表索引号或名称。
  (1)AutoFilter属性:用于设置是否进行筛选。
  (2)UsedRange属性:返回Range对象,代表指定工作表中的已用区域。
  (3)PrintOut方法:用于打印指定的对象。
  (4)PrintPreview方法:将切换之打印预览视图。
  (5)Select方法:用于选择指定的对象。
  6.Range对象
  该对象代表选择区域,是Excel开发中一个常用的对象。
  (1)Address属性:返回对指定区域的引用名称。
  (2)Areas属性:返回Areas集合,代表多重选择区域中的所有区域。
  (3)Column属性:返回第一块指定区域中的第一列的序号。
  (4)Columns属性:返回Range对象,代表指定区域中的所有列。
  (5)ColumnWidth属性:返回或设置指定区域中所有列的列宽。
  (6)Formula属性:用于设置Range对象使用的公式。
  (7)MergeArea属性:返回Range对象,代表指定单元格的合并范围。
  (8)MergeCells属性:返回区域中是否包含合并单元格。
  (9)NumberFormat属性:返回或设置指定对象的格式代码。
  (10)Row属性:返回第一块指定区域中的第一行的序号。
  (11)Rows属性:返回Range对象,代表指定区域中的所有行。
  (12)Activate方法:用于激活对象。
  (13)ApplyNames方法:用于将名称应用于指定的单元格。
  (14)AutoFill方法:用于对指定的单元格进行自动填充。
  (15)AutoFit方法:用于将列宽和行高调整为适当值。
  (16)Find方法:用于在区域内查找特定信息,并返回代表第一个包含所查找信息的单元格。
  (17)Merge方法:用于从指定的Range对象中创建合并单元格。
  (18)Replace方法:用于在指定区域内查找和替换。
  (19)Subtotal方法:用于创建指定区域内的分类汇总。
*/

#4


pb中打开excel 并将excel数据读取到数据窗口中然后保存到数据库中.

#5


cb_2 clicked()
可以选择excel文件,没有报错,DataWindow中还是没有数据。代码如下:

string str_savename,named,s_grxh 
int excelok,li_net 
long li_count,i 

oleobject excelserver 
excelserver=create oleobject 
excelok=excelserver.connecttonewobject("excel.application") 

//检查返回值,以确保已成功地连接到了Excel 
if excelok <> 0 then 
messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!") 
return -1 
end if 
li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(*.xls),*.xls") 
if li_net > 0 then 
if str_savename = "" then return -1 
dw_product.settransobject(sqlca) 
dw_product.reset() 
excelserver.workbooks.open(str_savename) 
excelserver.activesheet.cells.copy 
li_count = dw_product.importclipboard(2) //导入数据 
clipboard("") 

excelserver.quit() 
excelserver.disconnectobject() 
destroy excelserver 
return 1 
else 
messagebox('信息提示','没有指定导入文件!') 
return -1 
end if 

#6


该回复于2012-10-08 09:22:13被版主删除

#1


按这个思路,
我建了一个应用包含一个事件 
open(w_main) //w_main
一个w_main窗口
有一个DataWindowd控件w_product
一个cb_1按钮 clicked事件:
long   numcols,numrows,c,r
OLEObject   xlapp,xlsub
int   ret
//定义变量 

numcols   =   long(dw_product.Object.DataWindow.Column.Count) 
//设置行号和列号 
numrows   =   dw_product.RowCount() 
//获得行数 
xlApp   =   Create   OLEObject 
//创建OLE对象 

ret   =   xlApp.ConnectToNewObject(   "Excel.Sheet "   ) 
if   ret   <   0     then 
MessageBox( "连接Excel程序失败! ",string(ret)) 
        return 
end   if 
//连接Excel,并检验返回值 

xlApp.Application.Workbooks.Open( "E:\ybb.xls ") 
//打开一个特定的Excel文件 
xlApp.Application.Visible   =   true 
//使该Excel文件可视 
xlsub   =   xlapp.Application.ActiveWorkbook.Worksheets[1] 
//确定第一个工作簿 

For   c   =   1   to   numcols 
For   r   =   1   to   numrows 
          xlsub.cells[r,c]   =   dw_product.object.data[r,c]     
      Next 
Next 
//循环发送数据 

xlApp.DisConnectObject() 
Destroy   xlapp 
//断开连接 



运行报错:
PowerBuilder Application Execution Error (R0002)
---------------------------
Application terminated.

Error: Null object reference at line 6 in clicked event of object cb_1 of w_main.

#2


给你一个函数,直接调用即可导入xls、text或dbf文件中的数据。当然前提是数据窗口列序要和excel文件的列序相同。你可以自己起个函数名:
string path,filename
integer value,result,li_startrow

//ab_flag boolean 传入是否有标题行,有=true,无=false
//idw_dw datawindow 数据窗口
//返回 long

if ab_flag then
li_startrow = 2
else
li_startrow = 1
end if

value = GetFileOpenName("请选择欲导入的文件",path,filename,"xls","xls Files (*.xls),*.xls,Text Files (*.TXT),*.TXT,DBF Files (*.DBF),*.DBF")

if value<>1 then return -1

if right(path,3)='xls' or right(path,3)='XLS' then 
 OLEObject ObjExcel
 ObjExcel = CREATE OLEObject
 result = ObjExcel.ConnectToNewObject( "excel.application")
  if result <> 0 then 
  messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!") 
   Return  -1
  else
   ObjExcel.Workbooks.Open(path)
  
//   ObjExcel.activeworkbook.sheets("sheet2").select

   string ls_copy
  int i
     if ObjExcel.ActiveSheet.Cells.Copy = true then 
          ObjExcel.Application.Visible = false
          idw_dw.SetTransObject(SQLCA)
          i =  idw_dw.ImportClipboard(li_startrow)     //将系统剪切版上的内容粘贴到数据窗口中,其中2为起始行参数
 choose case i
case -1
MessageBox('警告','Excel文件中没有记录行或者起始行值大于字符串中的行数。')
case  -3
MessageBox('警告','无效变元。')
case -4
MessageBox('警告','无效输入。')
case -13
MessageBox('警告','输入的数据不支持数据窗口的类型。')
case -14
MessageBox('警告','错误解析数据窗口嵌套。')
end choose
          Clipboard("")                 //清空剪切版上的内容
          ObjExcel.Quit()
          ObjExcel.DisconnectObject()     //断开与OLE的连接
          Destroy ObjExcel 
 return i
      else
          messagebox("提示","您的EXCEL不支持此功能,请检查EXCEL版本,建议使用OFFICE-EXCEL")
     end if
end if 
elseif right(path,3)='txt' or right(path,3)='TXT' then
i = idw_dw.importfile(text!,path,li_startrow)
return i
elseif right(path,3)='dbf' or right(path,3)='DBF' then
  i = idw_dw.importfile(DBase3!,path,li_startrow)
 return  i
else
return -1
end if

#3


序号 功能 代码案例
"String ls_FileName , ls_DirFile
string is_dir
integer li_value
li_value = GetFileOpenName(""请选择excel文件名"", ls_DirFile, ls_FileName, ""xls"", ""Excell Files (*.xls), *.xls"")"
"IF li_value=1 THEN
 is_dir = left(ls_DirFile,pos(ls_DirFile,ls_FileName) - 1)
 sle_EA.text = ls_DirFile 
 //获取Excel文件名称
 If lastpos( ls_DirFile, '.xls'  ) = 0 Then
 End If  
 is_xlsName = midw( ls_DirFile, lastpos( ls_DirFile, '\' )+1, lastpos( ls_DirFile, '.xls'  ) - lastpos( ls_DirFile, '\' ) - 1 )"
"OLEObject  OLE_ExcelA  
OLE_ExcelA = Create  OLEObject  
long ll_error
ll_error = OLE_ExcelA.ConnectToNewObject(""excel.Application"")
OLE_ExcelA.visible = true "
"OLE_ExcelB.Workbooks.Open( sle_eb.text )
mle_2.text = mle_2.text + '成功打开 '+ sle_eb.text +char(13)+char(10)
ll_sumSheet = OLE_ExcelB.Worksheets.count
If ll_sumsheet < 1 Then
 OLE_ExcelB.quit() 
 OLE_ExcelB.Workbooks.close 
 OLE_ExcelB.DisConnectObject()
 destroy  OLE_ExcelB;"
"  ll_rowA = OLE_ExcelA.ActiveWorkbook.Activesheet.UsedRange.rows.Count 
 ll_columnA = OLE_ExcelA.ActiveWorkbook.Activesheet.UsedRange.columns.Count"
"ld_sph = double( OLE_ExcelA.cells(  ll_num , ll_start_l ).value )  
  ld_cyl = double( OLE_ExcelA.cells(  ll_num , ll_start_l +1 ).value )"
"OLE_ExcelA.quit() 
OLE_ExcelA.Workbooks.close 
OLE_ExcelA.DisConnectObject()
destroy  OLE_ExcelA"
dw_6.saveas( ls_path , EXCEL5! , true )
"OLE_ExcelB.Worksheets( 1 ).Activate  
OLE_ExcelB.ActiveSheet.Columns(1).ColumnWidth=10  
OLE_ExcelB.ActiveSheet.Columns(2).ColumnWidth=5 "
"OLE_ExcelB.cells( 1,16 ).value = '总价1'
OLE_ExcelB.cells( 1,17 ).value = '总价2'"
" OLE_ExcelB.cells( k + 1 , 16 ).value = dw_4.describe(""evaluate('sum(sumprice for all)', 1)"") 
 OLE_ExcelB.cells( k + 1 , 17 ).value = dw_4.describe(""evaluate('sum(  zongjia1  for all )', 1)"")
 OLE_ExcelB.cells( k + 1 , 18 ).value = dw_4.describe(""evaluate('sum(  zongjia2  for all )', 1)"")"
"OLE_ExcelB.Columns(""P:P"").Select
OLE_ExcelB.Selection.NumberFormatLocal = ""#,##0.00_ """
"OLE_ExcelA.ActiveSheet.Columns(22).Delete
OLE_ExcelA.ActiveSheet.Columns(22).Delete"
"OLE_ExcelA.ActiveSheet.Range(""F2:F2"").Select
OLE_ExcelA.ActiveWindow.FreezePanes = True"
"string ls_range
ls_range = 'A1:'+'W'+string( dw_1.rowcount( ) + 2 )
OLE_ExcelA.Range( ls_range ).WrapText = true"
"//  OLE_ExcelB.range( 'A1:I1' ).select
//  OLE_ExcelB.range( 'A1:I1' ).merge 
//  OLE_ExcelB.range( 'A1:I1' ).HorizontalAlignment  = 7"
"//  OLE_ExcelB.range( 'A3:I4' ).VerticalAlignment  = 2
//      OLE_ExcelB.range( 'A3:I4' ).WrapText = true
//  OLE_ExcelB.range( 'A3:I4' ).HorizontalAlignment  = 7
//  //OLE_ExcelB.Range( 'A3:I4' ).Interior.Color = rgb( 128, 255, 255 )"
"ls_rangB = 'A5:I'+string(ll_rowA)
OLE_ExcelB.range(  ls_rangB ).VerticalAlignment  = 2
OLE_ExcelB.range(  ls_rangB ).WrapText = true
OLE_ExcelB.Range( ls_rangB ).Borders( 3 ).LineStyle = 1
OLE_ExcelB.Range( ls_rangB ).Borders( 3 ).Weight = 2"
" ls_range = 'A1:'+'J'+string(ll_sumrowA)
 OLE_ExcelA.ActiveSheet.Range(ls_range).Copy  
 OLE_ExcelA.Worksheets( 1 ).Activate 
 ls_range = 'A'+string(ll_sumrowB+1)      //'J'+string(ll_ColA)
 OLE_ExcelA.ActiveSheet.Range( ls_range ).PasteSpecial "
OLE_ExcelA.ActiveSheet.Range( ls_range ).Interior.Color  = rgb(0,123,256 )
1.创建Excel物件  eole=CREATEOBJECT(′Excel.application′)  
2.添加新工作簿  eole.Workbooks.add  
3.设置第3個工作表为工作表  eole.Worksheets(″sheet3″).Activate  
4.打开指定工作簿  eole.Workbooks.Open(″c:\temp\ll.xls″)  
5.显示Excel窗口 eole.visible=.t.   /true    
6. 更改Excel标题栏目  eole.Caption=″PB 调用Microsoft  Excel″  
7.给单元格赋值  eole.cells(1,4).value= XM / 字符时间数字 
8.设定指定列的宽度(单位:字节)  eole.ActiveSheet.Columns(1).ColumnWidth=5  
9.设定指定行的高度(单位:磅)  eole.ActiveSheet.Rows(1).RowHeight=1/0.035   (设定行高为1cm,1磅=0.035cm )  
10.在第18行之前插入分页符  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1  
11.在第4列之前刪除分页符  eole.ActiveSheet.Columns(4).PageBreak=0  
12.指定边框线宽度(Borders参数如下)  ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3  
13.设置四个边框线条的类型  eole.ActiveSheet.Range(″b3:d3″).Borders(2).Linestyle=1   (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;Linestyle值:1与7-细实、2-细虚、4-点虚、9-双细实线 )  
14.设置页眉  eole.ActiveSheet.PageSetup.CenterHeader=″报表1″  
15.设置页脚  eole.ActiveSheet.PageSetup.CenterFooter=″第&P頁″  
16.设置页眉到頂端边为距2cm  eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035  
17.设置页脚到底边距为3cm  eole.ActiveSheet.PageSetup.FooterMargin=3/0.035  
18.设置顶边距为2cm  eole.ActiveSheet.PageSetup.TopMargin=2/0.035  
19.设置底边距为4cm  eole.ActiveSheet.PageSetup.BottomMargin=4/0.035  
20.设置左边距为2cm  veole.ActiveSheet.PageSetup.LeftMargin=2/0.035  
21.设置右邊距为2cm  eole.ActiveSheet.PageSetup.RightMargin=2/0.035  
22.设置页面水平居中  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.  
23.设置页面垂直居中  eole.ActiveSheet.PageSetup.CenterVertically=.t.  
24.设置页脚纸张大小(1-窄行8511  39-宽行1411)  eole.ActiveSheet.PageSetup.PaperSize=1  
25.列印单元格网线  eole.ActiveSheet.PageSetup.PrintGridlines=.t.  
26.拷贝整個工作表  eole.ActiveSheet.UsedRange.Copy  
27.拷贝指定区域  eole.ActiveSheet.Range(″A1:E2″).Copy  
28.粘贴  eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial  
29.在第2行之前插入一行  eole.ActiveSheet.Rows(2).Insert  
30.在第2列之前插入一列  eole.ActiveSheet.Columns(2).Insert  
31.设置自字体  eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″
32.设置字体大小  eole.ActiveSheet.Cells(1,1).Font.Size=25  
33.设置字体为斜体  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.  
34.设置整列字体为粗体  eole.ActiveSheet.Columns(1).Font.Bold=.t.  
35.清除单元格  eole.ActiveSheet.Cells(1,4).ClearContents  
36.列印预览工作表  eole.ActiveSheet.PrintPreview  
37.列印輸出工作表  eole.ActiveSheet.PrintOut  
38.工作表另爲  eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)  
39.放弃存档  eole.ActiveWorkbook.saved=.t.  
40.关闭工作簿  eole.Workbooks.close  
41.退出Excel  eole.quit  
42.  合并单元格内取其左上角的单元格中的数值 < > 写入数据的时候随便写其中的任意格,最后数据存放在左上角的格子中
43.冻结窗口  Range("A2:A4").Select   ActiveWindow.FreezePanes = True
/* 4.Workbook对象
  该对象代表工作簿。
  (1)Styles属性:返回Styles集合,代表指定工作簿的所有样式。
  (2)Add方法:用于新建工作簿,并将其设置为活动工作簿。
  (3)Open方法:用于打开工作簿。
  (4)OpenText方法:用于载入文本文件,并将其进行分列处理,然后在工作表中插入经过分列处理的文本数据。
  5.Worksheet对象
  该对象代表工作表,通过“Worksheets(index)”的语法可获取Worksheet对象,其中index参数工作表索引号或名称。
  (1)AutoFilter属性:用于设置是否进行筛选。
  (2)UsedRange属性:返回Range对象,代表指定工作表中的已用区域。
  (3)PrintOut方法:用于打印指定的对象。
  (4)PrintPreview方法:将切换之打印预览视图。
  (5)Select方法:用于选择指定的对象。
  6.Range对象
  该对象代表选择区域,是Excel开发中一个常用的对象。
  (1)Address属性:返回对指定区域的引用名称。
  (2)Areas属性:返回Areas集合,代表多重选择区域中的所有区域。
  (3)Column属性:返回第一块指定区域中的第一列的序号。
  (4)Columns属性:返回Range对象,代表指定区域中的所有列。
  (5)ColumnWidth属性:返回或设置指定区域中所有列的列宽。
  (6)Formula属性:用于设置Range对象使用的公式。
  (7)MergeArea属性:返回Range对象,代表指定单元格的合并范围。
  (8)MergeCells属性:返回区域中是否包含合并单元格。
  (9)NumberFormat属性:返回或设置指定对象的格式代码。
  (10)Row属性:返回第一块指定区域中的第一行的序号。
  (11)Rows属性:返回Range对象,代表指定区域中的所有行。
  (12)Activate方法:用于激活对象。
  (13)ApplyNames方法:用于将名称应用于指定的单元格。
  (14)AutoFill方法:用于对指定的单元格进行自动填充。
  (15)AutoFit方法:用于将列宽和行高调整为适当值。
  (16)Find方法:用于在区域内查找特定信息,并返回代表第一个包含所查找信息的单元格。
  (17)Merge方法:用于从指定的Range对象中创建合并单元格。
  (18)Replace方法:用于在指定区域内查找和替换。
  (19)Subtotal方法:用于创建指定区域内的分类汇总。
*/

#4


pb中打开excel 并将excel数据读取到数据窗口中然后保存到数据库中.

#5


cb_2 clicked()
可以选择excel文件,没有报错,DataWindow中还是没有数据。代码如下:

string str_savename,named,s_grxh 
int excelok,li_net 
long li_count,i 

oleobject excelserver 
excelserver=create oleobject 
excelok=excelserver.connecttonewobject("excel.application") 

//检查返回值,以确保已成功地连接到了Excel 
if excelok <> 0 then 
messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!") 
return -1 
end if 
li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(*.xls),*.xls") 
if li_net > 0 then 
if str_savename = "" then return -1 
dw_product.settransobject(sqlca) 
dw_product.reset() 
excelserver.workbooks.open(str_savename) 
excelserver.activesheet.cells.copy 
li_count = dw_product.importclipboard(2) //导入数据 
clipboard("") 

excelserver.quit() 
excelserver.disconnectobject() 
destroy excelserver 
return 1 
else 
messagebox('信息提示','没有指定导入文件!') 
return -1 
end if 

#6


该回复于2012-10-08 09:22:13被版主删除