收藏 分享(赏)

Visual Foxpro中如何实现对EXCEL表格的操作.doc

上传人:jinchen 文档编号:6979401 上传时间:2019-04-29 格式:DOC 页数:71 大小:658.50KB
下载 相关 举报
Visual Foxpro中如何实现对EXCEL表格的操作.doc_第1页
第1页 / 共71页
Visual Foxpro中如何实现对EXCEL表格的操作.doc_第2页
第2页 / 共71页
Visual Foxpro中如何实现对EXCEL表格的操作.doc_第3页
第3页 / 共71页
Visual Foxpro中如何实现对EXCEL表格的操作.doc_第4页
第4页 / 共71页
Visual Foxpro中如何实现对EXCEL表格的操作.doc_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、Visual Foxpro 中如何实现对 EXCEL 表格的操作VFP 和 Excel 都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用 VFP 进行处理数据,而利用 Excel 的预览打印功能进行报表打印。这就需要我们在 VFP 中直接来控制 Excel。下面就在开发 VFP 应用项目时对 Excel 的控制作一下介绍:1创建 Excel 对象oExcel=CREATEOBJECT(“Excel.application“)2添加新工作簿oExcel.Workbooks.add3设置第 3 个工作表为激活工作表oExcel.Workshee

2、ts(“sheet3“).Activate4打开指定工作簿oExcel.Workbooks.Open(“c:templl.xls“)5显示 Excel 窗口oExcel.visible=.t.6更改 Excel 标题栏oExcel.Caption=“VFP 应用程序调用 Microsoft Excel“7给单元格赋值oExcel.cells(1,4).value=XM(XM 为数据库字段名)8设置指定列的宽度(单位:字符个数 )oExcel.ActiveSheet.Columns(1).ColumnWidth=59设置指定行的高度(单位:磅 )oExcel.ActiveSheet.Rows(1

3、).RowHeight=1(设定行高为 1 磅,1 磅=0.035 厘米)oExcel.ActiveSheet.Rows(“50:100“).RowHeight=1 &设置第 50 行至 100 行的高度10在第 18 行之前插入分页符oExcel.Worksheets(“Sheet1“).Rows(18).PageBreak=111在第 4 列之前删除分页符oExcel.ActiveSheet.Columns(4).PageBreak=012指定边框线宽度(Borders 参数如下)ole.ActiveSheet.Range(“b3:d3“).Borders(2).Weight=313设置四

4、个边框线条的类型oExcel.ActiveSheet.Range(“b3:d3“).Borders(2).LineStyle=1(其中 Borders 参数: 1左、 2右、3顶、4底、5斜、6斜/;LineStyle 值:1 与 7细实、2细虚、4点虚、9双细实线)14设置页眉oExcel.ActiveSheet.PageSetup.CenterHeader=“报表 1“14设置页眉(字体大小)oExcel.ActiveSheet.PageSetup.CenterHeader=“&50 报表 1“ &后面的 50 可以自定义,表示字体的大小15设置页脚oExcel.ActiveSheet.P

5、ageSetup.CenterFooter=“第&P 页“15.设置页脚(字体大小)oExcel.ActiveSheet.PageSetup.CenterFooter=“&28 第&P 页“ &后面的 28 可以自定义,表示字体的大小16设置页眉到顶端边距为 2 厘米oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.03517设置页脚到底边距为 3 厘米oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.03518设置顶边距为 2 厘米oExcel.ActiveSheet.PageSetup.TopMargin=

6、2/0.03519设置底边距为 4 厘米oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.03520设置左边距为 2 厘米oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.03521设置右边距为 2 厘米oExcel.ActiveSheet.PageSetup.RightMargin=2/0.03522设置页面水平居中oExcel.ActiveSheet.PageSetup.CenterHorizontally=.t.23设置页面垂直居中oExcel.ActiveSheet.PageSetup.CenterVert

7、ically=.t.24设置页面纸张大小(1窄行 8 5 11 39宽行14 11 9:A4)oExcel.ActiveSheet.PageSetup.PaperSize=125打印单元格网线oExcel.ActiveSheet.PageSetup.PrintGridlines=.t.26拷贝整个工作表oExcel.ActiveSheet.UsedRange.Copy27拷贝指定区域oExcel.ActiveSheet.Range(“A1:E2“).Copy28粘贴oExcel.WorkSheet(“Sheet2“).Range(“A1“).PasteSpecial29在第 2 行之前插入一行

8、oExcel.ActiveSheet.Rows(2).Insert30在第 2 列之前插入一列oExcel.ActiveSheet.Columns(2).Insert31设置字体oExcel.ActiveSheet.Cells(2,1).Font.Name=“黑体“32设置字体大小oExcel.ActiveSheet.Cells(1,1).Font.Size=2533设置字体为斜体oExcel.ActiveSheet.Cells(1,1).Font.Italic=.t.34设置整列字体为粗体oExcel.ActiveSheet.Columns(1).Font.Bold=.t.35清除单元格公式

9、oExcel.ActiveSheet.Cells(1,4).ClearContents36打印预览工作表oExcel.ActiveSheet.PrintPreview37打印输出工作表oExcel.ActiveSheet.PrintOut38. oExcel.CommandBars(1).Controls(1).accChild(18).Execute &打印(菜单序号 18 为 Excel2003 的打印项)&不同版本 Excel 的菜单序号可以通过以下程序取得*(需要在 VFP7.0 以上运行)oXls=GETOBJECT(“,“excel.sheet“)XlApp=oXLS.APPLIC

10、ATIONXlSheet=XlApp.ActiveSheetbars=xlapp.CommandBars.COUNTSTR=FOR i=1 TO barsSTR=STR+CHR(13)+ALLTRIM(STR(i)+、+xlapp.CommandBars(i).accName+(NAME:+xlapp.CommandBars(i).NAME+ INDEX:+ALLTRIM(STR(xlapp.CommandBars(i).INDEX)+)bars2=mandbars(i).accChildCountFOR j=1 TO bars2TRYobj=mandbars(i).CONTROLS(j)ST

11、R=STR+CHR(13)+ +ALLTRIM(STR(j)+、+mandbars(i).CONTROLS(j).accname+(ID:+ALLTRIM(STR(xlapp.CommandBars(i).CONTROLS(j).ID)+)FOR k=1 TO obj.accChildCountTRYIF NOT EMPTY(obj.CONTROLS(k).accname )STR=STR+CHR(13)+ +ALLTRIM(STR(k)+、+obj.CONTROLS(k).accName+ (ID:+ ALLTRIM(STR(obj.CONTROLS(k).ID)+)ENDIFCATCHEX

12、ITENDTRYENDFORCATCHEXITENDTRYENDFORWAIT WINDOWS ALLTRIM(STR(i)+ / +ALLTRIM(STR(bars)+ +STR(i/bars*100,10,2)+% NOWAITENDFORSAVE TO XLS.txt ALL LIKE STRMODIFY COMMAND XLS.txtRETURN39工作表另存为oExcel.ActiveWorkbook.SaveAs(“c:temp22.xls“)检测当前目录是否有同名的 EXCEL 表,如果有先删除,再另存IF !FILE(SYS(5) + CURDIR() + “result.xl

13、s“)oExcel.ActiveWorkbook.SaveAs(SYS(5) + CURDIR() + “result.xls“)ELSElcFileName = loExcel.GetSaveAsFilename(“result“, “Excel (*.xls), *.xls“)IF !EMPTY(lcFileName)IF FILE(lcFileName)DELETE FILE (lcFileName)ENDIF oExcel.ActiveWorkbook.SaveAs(lcFileName)ENDIFENDIF40放弃存盘 & 避免出现保存对话框oExcel.ActiveWorkbook

14、.saved=.t.41.存盘oExcel.ActiveWorkbook.save42关闭工作簿oExcel.Workbooks.close43退出 ExceloExcel.quitRELEASE oExcel &只有释放对象变量, EXCEL 进程才会完全关闭44合并单元格oExcel.ActiveSheet.Range(“A4:B5“).MergeCells=.t.45下列设置大家自己理解With crfole.ActiveSheet.PageSetup.LeftHeader = chr(13)+“左页眉 “.CenterHeader = “中页眉“.RightHeader = “右页眉“

15、.LeftFooter = “左页脚“.CenterFooter = “中页脚“.RightFooter = “右页脚“.orientation=1 &1 竖排,2 横排EndWithWith crfole.Range(“A4:C4“).MergeCells = .t.WrapText =.f.Orientation = 0.AddIndent =.f.ShrinkToFit = .f.EndWith46文本对齐oExcel.range(“A4:c4“).HorizontalAlignment =1 &水平(1-默认、 2-靠左、3-居中、4-靠右、5- 填充、6=两端对齐、7=跨列居中、8=

16、分散对齐)oExcel.range(“A4:c4“).VerticalAlignment =2 &垂直(1=靠上、2= 居中、3= 靠下、4= 两端对齐、5=分散对齐)47拷贝整个工作表(含格式)oExcel.activesheet.cells.copy &拷贝oExcel.sheets(1).select &选择第一工作表oExcel.ActiveSheet.Paste &粘贴oExcel.ActiveSheet.Cells(3,4).value & ActiveSheet 为当前的 Sheet 工作薄名字,Cells(3,4).value 为第3 行第 4 列的值以上控制调用语句在中文 V

17、FP5.0 企业版下运行通过,运行环境为 Excel 97 及中文 Windows 98 48. 显示某个单元格的批注内容oExcel=CREATEOBJECT(“Excel.application“)oExcel.Workbooks.OPEN(“d:TESTtesta.xls“)oExcel.VISIBLE=.T.?oExcel.Range(“B5“).Comment.Text &显示 B5 单元格的批注内容oExcel.Workbooks.CLOSEoExcel.QUITRELEASE oExcel49.oExcel.ActiveSheet.PageSetup.PrintTitleRows

18、=“$1:$1“ &每页都打印行标头(每页顶部出现的单元格的行)50.保护工作表:oExcel.ActiveSheet.PROTECT(密码,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)51.保护工作薄oExcel.ActiveWorkbook.PROTECT(密码,.T.,.T.)第一个.T.:保护工作簿结构第二个.T.:保护工作簿窗口52.设置允许用户编辑区域oExcel.ActiveSheet.Protection.AllowEditRanges.Add(“区域 3“,oExcel.ActiveSheet.Ran

19、ge(“A2:D5“)53.如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为.F.oExcel.DisplayAlerts = .F. 如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为 False;这样每次出现需用户应答的消息时,Microsoft Excel 将选择默认应答。如果将本属性设置为 False,那么宏运行结束后, Microsoft Excel 并不自动将其设置回 True。故当宏运行结束后,都应将本属性设置回 True 值。54.将当前工作表中的已用区域(只读)存入数组。strPath=D:TEST123.xlsLOCAL oExcelo

20、Excel=CREATEOBJECT(“Excel.Application“)oExcel.WorkBooks.OPEN(strPath)arrTableInfo=oExcel.ActiveSheet.UsedRange.VALUE &将当前工作表中的已用区域(只读)存入数组。oExcel.QUITRELEASE oExcelINSERT INTO 表名 FROM arrTableInfo55.设置 excel 批注的字体 (excel 2000 实现了,如下:)ole.Range(“a3“).Comment.Shape.Select & 此命令要求批注的 Visible=.t.ole.sel

21、ection.Font.size=9ole.selection.Font.name=“黑体“ole.selection.Font.bold=.f.注:该组命令要求先选中批注框,否则写成 ole.Range(“a3“).Comment.Shape.Font.size=9 则出错,不知为何!-如何取得当前 EXCEL 表中工作表的数目及各工作表的名称?CLEARLOCAL lnSheetCountoExcel=CREATEOBJECT(“EXCEL.APPLICATION“) &创建 Excel 对象oExcel.WORKBOOKS.OPEN(“c:111321.xls“) &打开指定工作簿WIT

22、H oExcellnSheetCount=.WorkBooks(1).Sheets.Count &统计工作表数量ENDWITH?当前 EXCEL 表中工作表的数目为:+ALLTRIM(STR(lnSheetCount)FOR EACH oMyVar IN oExcel.sheets?当前 EXCEL 表中工作表的名称分别为+oMyVar.name &显示 Excel 表中所有工作表NEXT oMyVaroExcel.WORKBOOKS.CLOSE &关闭工作簿oExcel.QUIT &退出 Excel-获取工作表名称在以下示例中,创建了一个 microsoft excel 实例,添加了一个新的

23、工作簿。使用 foreach 语句显示工作簿中每个工作表的名称。此示例要求在运行示例的机器上正确安装 microsoft excel。oExcel = CREATE(“Excel.Application“)oExcel.Workbooks.ADDFOR EACH oMyVar IN oExcel.sheets? oMyVar.nameNEXT oMyVar-Excel 报表巧生成巧让 FoxPro 数据生成 Excel 报表Visual FoxPro 是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到 DBF 数据文件。然而随着办公自动化的普及,越来越多的时候需要将 DBF 文

24、件转化为 Excel 电子文档。常用转化方法是在 FoxPro 中用 Copy 命令进行格式转化或直接用 Excel 打开 DBF 文件。这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的 Excel 文件中,无法对数据类型进行有效转换,极易出现数据统计错误。有没有更好的方法呢?这里有一个更加通用的方法,在 VFP中调用 Excel,可以由 DBF 文件直接生成格式如下图所示一样复杂的 Excel 报表 (如图 1)。 Excel 报表具体过程如下:编辑推荐文章 新鲜接触 Excel 2000 XP Excel 2000 公式应用的几条经验 Excel 2000

25、函数应用之信息函数 假设我们要将表 Agcallop.dbf 文件输出为 Excel格式文档,报表形如图 1 所示。为使通用性更强,页面采用 A4 纸横向输出,默认字体为宋体 10 号,页脚处添加页号。部分程序代码如下:m.outfilename=putfile(输出结果 ,agcallop,xls)&取导出文件名称ef=CREATEOBJECT(Excel.application)&调用 Excel 程序ef.Workbooks.add&添加工作簿ef.Worksheets(“sheet1“).Activate&激活第一个工作表ef.visible=.t.&显示 Excel 界面ef.Cel

26、ls.Select&选择整张表ef.Selection.Font.Size = 10&设置整表默认字体大小为 10select 0use agcallop&选择被导出的表num=reccount()&求导出总记录数go topi=5ef.range(“F1:K1“).Select&选择标题栏所在单元格ef.Selection.Merge&合并单元格with ef.range(“F1 “)&设置标题及字体属性.value=客户服务部业务代表工作量情况统计表.Font.Name=“黑体“.Font.size=18endwithef.Rows(2).RowHeight=1/0.035&设置第二行高度

27、为 1cmef.range(“H2:O2“).Select&选定统计条件栏所在单元格ef.Selection.Merge&合并单元格ef.range(“H2“).Font.size=10ef.range(“H2“).HorizontalAlignment=4&设置内容对齐方式为右对齐,3 为居中,4 为右对齐ef.range(“H2“).value=统计时间: +dtoc(date()+ 打印日期:+dtoc(date()ef.Rows(“3:4“).Selectwith ef.Selection.HorizontalAlignment = 3&设置 3、4 行为水平对齐.VerticalAl

28、ignment = 2&垂直居中.NumberFormatLocal = “&设置 3、4 行为字符型内容endwithef.Range(“A3:A4“).Selectef.Selection.Merge&纵向合并第一列 3、4 行ef.Range(“A3“).value=工号&设置第一列标题内容ef.Columns(“A“).Select&整列选择ef.Selection.HorizontalAlignment = 3&水平居中ef.Columns(“A:B“).Selectef.Selection.NumberFormatLocal = “&设置 A、B 列为字符型内容ef.Range(“

29、B3:B4“).Selectef.Selection.Merge&纵向合并第二列 3、4 行ef.Range(“B3“).value=姓名&设置第二列标题内容ef.Columns(“B“).Select&整列选择ef.Selection.HorizontalAlignment = 3&水平居中ef.Range(“C3:E3“).Select&横向合并第三行 C-E 列ef.Selection.Mergeef.Range(“C3“).value=话务总量 &第三行大标题为“话务总量”的列ef.Range(“C4“).value=电话呼入量 &“话务总量”下第 1 个小标题“电话呼入量”ef.Ra

30、nge(“D4“).value=电话呼出量&“话务总量”下第 2 个小标题“电话呼出量”ef.Range(“E4“).value=合 计&“话务总量”下第 3 个小标题“合计”ef.Range(“F3:H3“).Selectef.Selection.Mergeef.Range(“F3“).value=话务总时间ef.Range(“F4“).value=呼入时间ef.Range(“G4“).value=呼出时间ef.Range(“H4“).value=合 计ef.Range(“I3:K3“).Selectef.Selection.Mergeef.Range(“I3“).value=单个话务平均时

31、间ef.Range(“I4“).value=呼入时间ef.Range(“J4“).value=呼出时间 ef.Range(“K4“).value=合 计ef.Range(“L3:L4“).Selectef.Selection.Mergeef.Range(“L3“).value=累计工作时间ef.Range(“M3:M4“).Selectef.Selection.Mergeef.Range(“M3“).value=无效时间 ef.Range(“N3:N4“).Selectef.Selection.Mergeef.Range(“N3“).value=录入量ef.Range(“O3:O4“).Sel

32、ectef.Selection.Mergeef.Range(“O3“).value=有效时间比 接下来通过 scan 语句,依次为每一行每一列单元格赋值。为了获得更好的打印效果,还需进行页面设置,如标题行、页面居中、横向排版等,还可以加边框线。以上程序在 VFP 6+Excel 2000+Windows 2000 下调试通过。实际应用中可根据需要对各项参数设置进行相应调整。-VFP 控制 EXCL 文件另存为 DBF(EXCEL 后台运行)fil=Thisform.List1.Value &其值为一个包含路径的文件名oExcel=CREATEOBJECT(Excel.application)o

33、Excel.Workbooks.Open(fil) &打开文件oExcel.Selection.AutoFilter &关闭(如果无则打开)自动筛选oExcel.Range(“A1:F1000“).Select &选中从第 1 行到 1000 行的前 6 列数据(另存后只有这些数据 )asfil=STRTRAN(UPPER(STRTRAN(fil,SUBSTR(fil,1,RAT(,fil),c:windowsdesktopcphz),.XLS,.dbf) &要保存的文件名IF FILE(asfil)DELETE FILE &asfilENDIFoExcel.ActiveWorkbook.Sa

34、veAs(asfil,8) &另存为DBFoExcel.ActiveWorkbook.saved=.t. &不保存当前EXCEL 表oExcel.Workbooks.close &关闭表oExcel.quit &退出 EXCELRELEASE oExcel &释放变量*例子*lcFileName=D:TEST.XLSoExcel=CREATEOBJECT(Excel.application)oExcel.Workbooks.Open(&lcFileName) &打开文件R=oExcel.SHEETS(1).UsedRange.ROWS.COUNT &有数据的总行数C=oExcel.SHEETS

35、(1).UsedRange.COLUMNS.COUNT &有数据的总列数oExcel.Cells(R,C).Select &选中数据oExcel.Columns.AutoFit &让所有的列宽都自动调整oExcel.DisplayAlerts=.F. oExcel.ActiveWorkbook.SaveAs(D:TEST.DBF,8) &另存为 DBFoExcel.ActiveWorkbook.saved=.t. &不保存当前EXCEL 表oExcel.Workbooks.close &关闭表oExcel.quit &退出 EXCELRELEASE oExcel &释放变量MESSAGEBOX

36、(Excel 文件:D:TEST.XLS 另存为 D:TEST.DBF 完成!,64, 信息提示 )*虽然用 APPEND FROM tx.xls TYPE XL8 可以更简单的追加数据,但有时会导致程序非法错误退出(除非先另存为 Excel 5.0)以下我做的一个简单例子,你参考一下功能:VB 调用 Excel,将一个 Excel 文件另存为Dbf。前提:要安装 ExcelDim oExcel As ObjectlcSFileName = “D:test.xls“ 源 Excel 文件名lcDFileName = “D:test1.dbf“ 目标 Dbf 文件名Set oExcel = Cr

37、eateObject(“Excel.Application“) 创建 Excel 对象oExcel.Workbooks.Open (lcSFileName) 打开 Excel表R = oExcel.SHEETS(1).UsedRange.ROWS.Count 有数据的总行数C = oExcel.SHEETS(1).UsedRange.Columns.Count 有数据的总列数oExcel.Cells(R, C).Select 选中数据oExcel.Columns.AutoFit 让所有的列宽都自动调整oExcel.DisplayAlerts = Flase 不显示提示框oExcel.Activ

38、eWorkbook.SaveAs FileName:=lcDFileName, FileFormat:=8oExcel.ActiveWorkbook.saved = Ture 不保存当前EXCEL 表oExcel.Workbooks.Close 关闭表oExcel.quit 退出 EXCELSet oExcel = Nothing 释放对象MsgBox (“Excel 文件: “ & lcSFileName & “ 另存为 “ & lcDFileName & “ 完成!“)-实用的 VFP 与 EXCEL 交互编程摘要:本文介绍了几种实用的 VFP 与 EXCEL 交互编程的方法与实例,将 V

39、FP 强大的数据处理功能与EXCEL 优异的制表功能有机地结合起来,大大增强了软件的应用效果。关键词:VFP、EXCEL、DDE 、OLE 、交互编程。Some Cross_Programming Methods Between VFP and EXCELZou yiming(Gansu Lanzhou Section of Instruments Lanzhou Petrochemical Staff College)Abstract: The author introduces us in this paper some practical methods and instance of

40、cross_programming between VFP and EXCEL . It extremely improves their performances by combining VFPs data processing functions with EXCELs excellent tabulation functions.Key Words: VFP、EXCEL、OLE、DDE、Cross-ProgrammingVFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员的强有力工具,而EXECL 则是一

41、种优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势。上述两种软件在各自的应用领域均得到广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。本文将结合具体实例介绍几种 VFP 与 EXCEL 交互编程的方法,每种方法虽然实现手段各异,但功能相仿。其功能可简述如下:VFP 数据表“学生成绩表DBF ”中含 “学生姓名” 、 “语文” 、 “数学” 等字段,示例程序将从 EXCEL 工作簿“VFP 交互XLS”之工作表 “查询”中用书签“课程名”指定的单元取得欲查询的课程名称,然后在数据表“学生成绩表DBF”中自动搜索,以找到

42、该门课程不及格的同学名单,最后传送至原EXCEL 工作薄形成新的工作表单,同时,新工作表还将以该课程名命名。下列程序均在 VFP50 与 EXCEL97 中调试通过。因篇幅所限,程序中的错误处理部分略去。一、EXECL 驱动 VFPEXECL 内置的 VBA 语言(Visual Basic For Application)为 EXECL 功能的扩展提供了便利的手段,用户可使用该语言直接驱动 VFP 完成数据检索等功能。程序首先生成一个 VFP 对象,然后用 VFP 的DoCmd 方法执行 VFP 摸索命令串,其摸索结果再借助于 VFP 的 DateToClip 方法拷贝至剪切板,最后 VBA

43、将其粘贴至工作表的正确位置。Sub FoxTest()Dim oFox As ObjectDim SLesson As StringDim SCommand As StringSet oFox = CreateObject(“VisualFoxPro.Application“) 启动 VFP,生成 VFP 对象Sheets(“查询“).SelectSLesson = Range(“课程名“) 在名为“课程名”的单元格中得到欲查询的课程名称Sheets.Add 产生新的工作表单ActiveSheet.Name = Slesson 指定工作表单的名称与课程名称相同SCommand = “SELEC

44、T 学号,语文,数学 FROM d:vfp学生成绩表 WHERE “+ SLesson + “Ccdh=ALLTRIM(STR(cdh)endifcdwmc=TRIM(hb1.Cells(i,2).Value)IF ISNULL(cdwmc)cdwmc=“endifcgg=hb1.Cells(i,3).ValueIF ISNULL(cgg)cgg=“ELSEIF TYPE(“cgg“)“C“,ALLTRIM(STR(cjldw),ALLTRIM(cjldw)nsl=hb1.Cells(i,5).ValueIF ISNULL(nsl)nsl=0endifcch=TRIM(hb1.Cells(i,

45、6).Value)IF ISNULL(cch)cch=endifcxh=hb1.Cells(i,8).ValueIF ISNULL(cxh)cxh=“ELSEIF TYPE(“cxh“)Cccpmc=ALLTRIM(STR(ccpmc)ELSEccpmc=TRIM(ccpmc)ENDIFSELECT storeREPLACE rq WITH crq,dh WITH cdh,dwmc WITH cdwmc,gg WITH cgg,jldw WITH cjldw,sl WITH nsl,ch WITH cch,cpbh WITH cxh,cpmc WITH ccpmci=i+1&如果一行全为空,记

46、作记录到底,如果中间存在多行的问题,我没有做考虑*IF EMPTY(cxh) AND nsl=0 AND EMPTY(cch) AND EMPTY(cjldw) AND EMPTY(cdh) AND EMPTY(cgg)isend=.t.ENDIFENDDOdele &最后一行为空行,删除WAIT “共转换得到“+ALLTRIM(STR(RECCOUNT()+“条记录!“ WINDOW TIMEOUT 2hb1.quit-* 本程序通过将原 dbf 表拷成 excel 格式,然后导入并* 设置报表格式*para tablenameLOCAL hb1 as excel.applicationWAIT “正在导出数据,请稍侯 “ WINDOW AT 20,30 TIMEOUT 1bhaveerror=.f. &定义一个变量判断是否发生错误tryhb1=createobject(“excel.application“)catchmessagebox(“请检查你是否已安装 microsoft excel应用程序!“,0,“提示“) bhaveerror=.t.endtryif bhaveerror=.t.returnendifif right(curr_path,1)curr_path=curr_path+“endifctable

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报