在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