关于VFP输出EXCEL的格式--------------------------------------------------------------------------------梦醒三分于 00-8-31 17:27:55 发表:关于VFP输出EXCEL的格式以下是我在处理VFP输出EXCEL报表是用的一段程序片段,以供参考。
如有更好的建议,亦请拿出来讨论讨论。
tmpsheet = GETOBJECT('','excel.sheet')if .not. ( type('tmpsheet')='O' ) && U 未能产生EXCEL对象=messagebox( '创建报表失败!' + CHR(13) + CHR(13) + ;'请检查你的系统是否正确安装 EXCEL 软件!' + CHR(13) + CHR(13) + ;'请联络系统管理员' + CHR(13) + ;'', 48, '')returnendifxlapp = tmpsheet.APPLICATIONxlapp.VISIBLE = .f.=messagebox( '准备生成月帐单' + CHR(13) + CHR(13) + ;'日期:' + dtoc(tt_this_day) + CHR(13) + CHR(13) + ;'如有在使用 EXCEL ,请暂时不要使用打印预览功能!!!' + CHR(13) + CHR(13) + ; '报表生成的过程中,请暂时不要使用计算机!!!', 48, '')* wait wind '正在生成'+ form_title +'报表,请稍侯......' nowait***! 创建excel打印对象*****------------------------------------------------------------------------------------xlapp.workbooks.ADD()xlapp.ActiveWindow.WindowState = 2 && 最大化打开的工作本xlsheet = xlapp.activesheetlc_name = allt(file_name_check( &temp_dls2_a..kh_mc )) = lc_name***! 创建excel打印对象*****------------------------------------------------------------------------------------xlsheet.Columns("A:G").Font.Size = 9 && 选择列xlsheet.Columns("A:A").ColumnWidth = 10 && 设置列宽度xlsheet.Columns("B:B").ColumnWidth = 15 && 设置列宽度xlsheet.Columns("C:C").ColumnWidth = 16 && 设置列宽度xlsheet.Columns("D:D").ColumnWidth = 16 && 设置列宽度xlsheet.Columns("E:E").ColumnWidth = 8 && 设置列宽度xlsheet.Columns("F:F").ColumnWidth = 10 && 设置列宽度xlsheet.Columns("G:G").ColumnWidth = 8 && 设置列宽度xlsheet.Columns("A:A").NumberFormatLocal = "@ "xlsheet.Columns("B:B").NumberFormatLocal = "@ "xlsheet.Columns("C:C").NumberFormatLocal = "@ "xlsheet.Columns("D:D").NumberFormatLocal = "@ "xlsheet.Columns("E:E").NumberFormatLocal = "0 "xlsheet.Columns("F:F").NumberFormatLocal = "0.00_ "xlsheet.Columns("G:G").NumberFormatLocal = "@ "xlsheet.Rows("5:5").ShrinkToFit = .t. && 自动收缩为适当尺寸以适应有效列宽xlsheet.Rows("5:5").HorizontalAlignment = 3 && 水平 1左对齐,3居中,4右对齐xlsheet.Rows("1:2").HorizontalAlignment = 3 && 水平 1左对齐,3居中,4右对齐* xlsheet.Columns("G:G").ShrinkToFit = .t. && 自动收缩为适当尺寸以适应有效列宽 ***! 设置页面信息*****------------------------------------------------------------------------------------In_Po = 0.0393700787401575 && 将度量单位从英寸转换为磅基础单位: 0.0393700787401575英寸 -> 0.1磅xlsheet.PageSetup.LeftMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.RightMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.TopMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.BottomMargin = xlapp.Application.InchesToPoints( In_Po * 20 )xlsheet.PageSetup.HeaderMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.FooterMargin = xlapp.Application.InchesToPoints( In_Po * 10 )xlsheet.PageSetup.Orientation = 1 && 设置打印方向: 1 纵向 2横向xlsheet.PageSetup.PrintTitleRows = "$1:$7" && 设置每页的页头 xlsheet.PageSetup.RightFooter = "第 &P 页,共 &N 页"xlsheet.PageSetup.CenterHorizontally = .t. && 页面水平居中***! 设置页面信息*****------------------------------------------------------------------------------------ ***! 生成打印内容*****------------------------------------------------------------------------------------ xlsheet.Cells( 2,1).VALUE = "帐单时间:" + t_this_yy + '年 '+t_this_mm + '月'xlsheet.Cells( 3,1).VALUE = "客户名称:"+ allt(&temp_dls2_a..khmc)xlsheet.Cells( 4,1).VALUE = "客户帐号:"+ allt(&temp_dls2_a..zh)prn_line = 5xlsheet.Cells( prn_line, 1).VALUE = "主叫号码"xlsheet.Cells( prn_line, 2).VALUE = "被叫号码"xlsheet.Cells( prn_line, 3).VALUE = "开始时间"xlsheet.Cells( prn_line, 4).VALUE = "结束时间"xlsheet.Cells( prn_line, 5).VALUE = "时长"xlsheet.Cells( prn_line, 6).VALUE = "话费(元)"xlsheet.Cells( prn_line, 7).VALUE = "计费标识"lc_min_col = 1lc_max_col = 7for lo_Col = lc_min_col to lc_max_colxlsheet.Cells( prn_line,lo_Col).Borders(4).Weight = 2 &&框线宽度: 2细线 3粗线 endforprn_line = prn_line + 1lc_sum_brhj = 0lc_sum_bybrlj = 0sele &dbf_j_yjd_acount to max_slsum &dbf_j_yjd_a..dj to sum_djgo topscanwait wind '处理'+ lc_name + ' 第'+ str(recno()) + ' 总数:'+str(max_sl) nowaitxlsheet.Cells( prn_line, 1).VALUE = allt(&dbf_j_yjd_a..zjhm)xlsheet.Cells( prn_line, 2).VALUE = allt(&dbf_j_yjd_a..bdhm)xlsheet.Cells( prn_line, 3).VALUE = allt(&dbf_j_yjd_a..riqi)xlsheet.Cells( prn_line, 4).VALUE = allt(&dbf_j_yjd_a..riqi2)xlsheet.Cells( prn_line, 5).VALUE = &dbf_j_yjd_a..fzxlsheet.Cells( prn_line, 6).VALUE = &dbf_j_yjd_a..djxlsheet.Cells( prn_line, 7).VALUE = allt(&dbf_j_yjd_a..jfbs)prn_line = prn_line + 1endscanfor lo_Col = lc_min_col to lc_max_colxlsheet.Cells( prn_line,lo_Col).Borders(3).Weight = 2 &&框线宽度: 2细线 3粗线 endforxlsheet.Range("A1:G1").MergeCells = .t. && 合并单元格xlsheet.Range("A2:G2").MergeCells = .t. && 合并单元格xlsheet.Range("A3:G3").MergeCells = .t. && 合并单元格xlsheet.Range("A4:G4").MergeCells = .t. && 合并单元格xlsheet.Range("A5:G5").MergeCells = .t. && 合并单元格xlsheet.Rows("1:1").Font.Size = 11 && 选择行xlsheet.Rows("1:1").Font.Bold = .t.xlsheet.Rows("1:2").RowHeight = 18.00 && 设置行宽度xlsheet.Rows("4:4").HorizontalAlignment = 4 && 水平 1左对齐,3居中,4右对齐xlsheet.Rows("5:5").HorizontalAlignment = 1 && 水平 1左对齐,3居中,4右对齐*! 完成删除提示按扭*****------------------------------------------------------------------------------------ file_name = all_path + lc_name + '.xls'if file( file_name) = .t.??chr(7)result=messagebox( file_name +'已存在,要替换该文件吗? ', 4+48+256, '' )if result=6ERASE &file_namexlapp.activeWorkbook.SaveAs( file_name ) endifelsexlapp.activeWorkbook.SaveAs( file_name )endifxlapp.activeWorkbook.close(.f.)endifendscanxlapp = tmpsheet.APPLICATIONxlapp.activeWorkbook.close(.f.)xlapp.quit=messagebox( '已完成报表输出!', 48, '')return。