首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

程序实现用EXCEL打开DBF另存为XLS可行吗?解决思路

2013-01-25 
程序实现用EXCEL打开DBF另存为XLS可行吗?如题[解决办法]可以。参考下面内容:*!* 1.创建Excel对象oExcelCre

程序实现用EXCEL打开DBF另存为XLS可行吗?
如题
[解决办法]
可以。参考下面内容:

*!* 1.创建Excel对象
oExcel=Createobject("Excel.application")


*!* 2.添加新工作簿
oExcel.Workbooks.Add
 

*!* 3.设置第3个工作表为激活工作表
oExcel.Worksheets("sheet3").Activate
 

*!* 4.打开指定工作簿
oExcel.Workbooks.Open("c:/temp/ll.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=5
 

*!* 9.设置指定行的高度(单位:磅)
oExcel.ActiveSheet.Rows(1).RowHeight=1
(设定行高为1磅,1磅=0.035厘米)
oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度
 

*!* 10.在第18行之前插入分页符
oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1
 

*!* 11.在第4列之前删除分页符
oExcel.ActiveSheet.Columns(4).PageBreak=0
 

*!* 12.指定边框线宽度(Borders参数如下)
ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3
 

*!* 13.设置四个边框线条的类型
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"
 

*!* 15.设置页眉(字体大小)
oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小
 

*!* 16.设置页脚
oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页"
 

*!* 17.设置页脚(字体大小)
oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小
 

*!* 18.设置页眉到顶端边距为2厘米
oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035
 

*!* 19.设置页脚到底边距为3厘米
oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035
 

*!* 20.设置顶边距为2厘米
oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035
 

*!* 21.设置底边距为4厘米
oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035
 

*!* 22.设置左边距为2厘米
oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035
 

*!* 23.设置右边距为2厘米
oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035
 

*!* 24.设置页面水平居中
oExcel.ActiveSheet.PageSetup.CenterHorizontally=.T.
 

*!* 25.设置页面垂直居中
oExcel.ActiveSheet.PageSetup.CenterVertically=.T.
 

*!* 26.设置页面纸张大小(1-窄行8511 39-宽行1411 9:A4)
oExcel.ActiveSheet.PageSetup.Papersize=1
 

*!* 27.打印单元格网线
oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.
 

*!* 28.拷贝整个工作表
oExcel.ActiveSheet.UsedRange.Copy
 

*!* 29.拷贝指定区域
oExcel.ActiveSheet.Range("A1:E2").Copy
 

*!* 30.粘贴
oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial
 

*!* 31.在第2行之前插入一行
oExcel.ActiveSheet.Rows(2).Insert
 

*!* 32.在第2列之前插入一列
oExcel.ActiveSheet.Columns(2).Insert
 

*!* 33.设置字体
oExcel.ActiveSheet.Cells(2,1).Font.Name="黑体"
 

*!* 34.设置字体大小
oExcel.ActiveSheet.Cells(1,1).Font.Size=25
 

*!* 35.设置字体为斜体
oExcel.ActiveSheet.Cells(1,1).Font.Italic=.T.
 

*!* 36.设置整列字体为粗体
oExcel.ActiveSheet.Columns(1).Font.Bold=.T.
 

*!* 37.清除单元格公式
oExcel.ActiveSheet.Cells(1,4).ClearContents
 



*!* 38.打印预览工作表
oExcel.ActiveSheet.PrintPreview
 

*!* 39.打印输出工作表
oExcel.ActiveSheet.PrintOut
 

*!* 40. oExcel.CommandBars(1).Controls(1).accChild(18).Execute &&打印(菜单序号18为Excel2003的‘打印’项)
&&不同版本Excel的菜单序号可以通过以下程序取得
*(需要在VFP7.0以上运行)
oXls=Getobject("","excel.sheet")
XlApp=oXLS.Application
XlSheet=XlApp.ActiveSheet
bars=xlapp.CommandBars.Count
Str1=''
For i=1 To bars
    Str1=Str1+Chr(13)+Alltrim(Str(i))+'、'+xlapp.CommandBars(i).accName+'(NAME:'+xlapp.CommandBars(i).Name+' INDEX:'+Alltrim(Str(xlapp.CommandBars(i).Index))+')'
    bars2=xlapp.commandbars(i).accChildCount
    For j=1 To bars2
        Try
            obj=xlapp.commandbars(i).Controls(j)
            Str1=Str1+Chr(13)+' '+Alltrim(Str(j))+'、'+xlapp.commandbars(i).Controls(j).accname+'(ID:'+Alltrim(Str(xlapp.CommandBars(i).Controls(j).Id))+')'
            For k=1 To obj.accChildCount
                Try
                    If Not Empty(obj.Controls(k).accname )
                        Str1=Str1+Chr(13)+' '+Alltrim(Str(k))+'、'+obj.Controls(k).accName+' (ID:'+ Alltrim(Str(obj.Controls(k).Id))+')'
                    Endif
                Catch
                    Exit
                Endtry
            Endfor
        Catch
            Exit
        Endtry
    Endfor
    Wait Windows Alltrim(Str(i))+' / '+Alltrim(Str(bars))+' '+Str(i/bars*100,10,2)+'%' Nowait
Endfor
Save To Xls.txt All Like Str1
Modify Command Xls.txt
Return
 

*!* 41.工作表另存为
oExcel.ActiveWorkbook.SaveAs("c:/temp/22.xls")
*检测当前目录是否有同名的EXCEL表,如果有先删除,再另存
If !File(Sys(5) + Curdir() + "result.xls")
    oExcel.ActiveWorkbook.SaveAs(Sys(5) + Curdir() + "result.xls")
Else
    lcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls")
    If !Empty(lcFileName)
        If File(lcFileName)
            Delete File (lcFileName)
        Endif
        oExcel.ActiveWorkbook.SaveAs(lcFileName)
    Endif
Endif
*!* 42.放弃存盘 && 避免出现保存对话框
oExcel.ActiveWorkbook.saved=.T.
 

*!* 43.存盘
oExcel.ActiveWorkbook.Save


 

*!* 44.关闭工作簿
oExcel.Workbooks.Close
objexcel.activeworkbook.Close(.F.)
 

*!* 45.退出Excel
oExcel.Quit
Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭
 

*!* 46.合并单元格
oExcel.ActiveSheet.Range("A4:B5").MergeCells=.T.
 

*!* 47.下列设置大家自己理解
With crfole.ActiveSheet.PageSetup
    .LeftHeader = Chr(13)+"左页眉"
    .CenterHeader = "中页眉"
    .RightHeader = "右页眉"
    .LeftFooter = "左页脚"
    .CenterFooter = "中页脚"
    .RightFooter = "右页脚"
    .Orientation=1 &&1竖排,2横排
Endwith
With crfole.Range("A4:C4")
    .MergeCells = .T.
    .WrapText =.F.
    .Orientation = 0
    .AddIndent =.F.
    .ShrinkToFit = .F.
Endwith
 

*!* 48.文本对齐
oExcel.Range("A4:c4").HorizontalAlignment =1 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)
oExcel.Range("A4:c4").VerticalAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)
 

*!* 49.拷贝整个工作表(含格式)
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列的值
*以上控制调用语句在中文VFP5.0企业版下运行通过,运行环境为Excel 97及中文Windows 98
 

*!* 50.显示某个单元格的批注内容
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Open("d:/TEST/testa.xls")
oExcel.Visible=.T.
?oExcel.Range("B5").Comment.Text &&显示B5单元格的批注内容
oExcel.Workbooks.Close
oExcel.Quit
Release oExcel


[解决办法]
本帖最后由 apple_8180 于 2012-07-26 16:48:56 编辑 你用 vfp6,可以这样:
Copy To Excel名.csv Type csv

Copy to Excel名.Xls Type Foxplus

这样可以导出全部记录,但能否看到全部记录,还要取决你的 Excel 版本
Excel 2003 支持最大行列
256 列    65536 行

Excel 2007 支持最大行列
16384 列  1048576 行

热点排行