思路:先选择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.
我建了一个应用包含一个事件
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
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-窄行8511 39-宽行1411) 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方法:用于创建指定区域内的分类汇总。
*/
"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-窄行8511 39-宽行1411) 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
可以选择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
#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.
我建了一个应用包含一个事件
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
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-窄行8511 39-宽行1411) 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方法:用于创建指定区域内的分类汇总。
*/
"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-窄行8511 39-宽行1411) 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
可以选择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