在PB中使用OLEObject操作Excel

在PB中我们可以使用DataWindow的SaveAs方法把数据窗口中的数据保存成Excel的格式。

一般我们会用如下语句来保存Excel

dw_1.SaveAs( as_filename,Excel!, TRUE )

但是这个语句对于Excel2007的支持不是很好,用这个方法保存的文件打开时会有问题。

经过摸索与实验发现改成下面这种方法以后能有效的解决问题。


//获取文件的后缀名

is_fileskbn = RightA(as_filename,Len(as_filename) -POS(as_filename, "."))   

//xls的时候用EXCEL2003的形式保存        

IF is_fileskbn = "xls" THEN          

              dw_1.SaveAs(as_filename, Excel8!, TRUE )

END IF

//xlsx的时候用EXCEL2007的形式保存      

IF is_fileskbn = "xlsx" THEN        

              dw_1.SaveAs(as_filename, XLSX!, TRUE )

END IF


有时候数据窗口里的数据是有格式的比如日期,金额等。但是用上面的方法保存的文件格式可能会丢失,所以还需要再设置一下格式,

设置格式时可以用下面的语句来实现

Integer li_return
OleObject OleExcel
OleExcel = CREATE OLEObject
li_return = OleExcel.ConnectToNewObject("excel.application")
If li_return <> 0 Then
 Destroy OleExcel
 Return ZaFalse
End If
OleExcel.Application.DisplayAlerts = FALSE
OleExcel.Visible = FALSE
OleExcel.WorkBooks.OPEN(as_filename)
OleExcel.application.ActiveSheet.Cells.Select
OleExcel.Selection.Font.Name = "MS Pゴシック"
OleExcel.Selection.Font.Size = 11
OleExcel.Application.Columns("I:I").NumberFormat = 'yyyy/mm/dd HH:MM:SS'   // 设置日期格式
OleExcel.Application.Columns("I:I").HorizontalAlignment=2                // 设置左对齐
OleExcel.Application.Columns("J:J").NumberFormat = 'yyyy/mm/dd HH:MM:SS'   //设置日期格式 
OleExcel.Application.Columns("J:J").HorizontalAlignment=2         //设置左对齐
OleExcel.application.ActiveWorkbook.SaveAs(as_filename)
OleExcel.WorkBooks.close
OleExcel.Application.DisplayAlerts = TRUE
OleExcel.Visible = TRUE
destroy OleExcel



你可能感兴趣的:(在PB中使用OLEObject操作Excel)