WPS2009
免费版可以将WPS数据存为Microsoft Office格式,以至在Microsoft Office中打开并操作,又保以操作Microsoft Office文件,所以在考虑放弃Microsoft Office
下面是一些简单的导出到WPS表格的代码
LOCAL num,nFldCount,LX,Exl,ZLK,ZLS,ZJZ,Lerr_pd
Lerr_pd=.F.
IF VARTYPE(BM)<>'C' OR EMPTY(BM)
BM=DBF()
IF EMPTY(BM)
=MESSAGEBOX("没有数据!", 16, "提示")
RETURN
ENDI
ENDIF
IF VARTYPE(BT)<>'C' OR EMPTY(BT)
BT='WPS
文档'
ENDIF
IF VARTYPE(FX)<>'N' OR BETWEEN(FX,1,2)
FX=1
ENDIF
IF !USED(BM)
=MESSAGEBOX("没有打开表!"+BM, 16, "提示")
RETURN
ENDIF
SELECT &;BM
num=RECCOUNT()
IF NUM=0
=MESSAGEBOX("没有数据!", 16, "提示")
RETURN
ENDI
THIS.Jdt('正在向WPS导出数据,请稍候...',num,0)
ON error Lerr_pd=.t.
eole=createobject('ET.APPLICATION')&;&;新打开一个ET表
ON ERROR
IF Lerr_pd=.t.
=MESSAGEBOX("WPS对象创建失败,
程序将中止!", 16, "提示")
THIS.Visible=.F.
RETU .f.
ENDI
eole.visible=.t.
eole.Workbooks.add &;&;添加加sheet1表
eole.Worksheets(1).Activate &;&;激活
*!* eole.Worksheets('sheet1').Activate
*!* eole.Worksheets(1).cells[1,1].value='你好'
*!* eole.Worksheets('sheet1').cells[1,1].value='你好'
*!* eole.worksheets['sheet2'].Rows[1].select &;&;先选中一行,即明确要删除哪一行
*!* eole.Worksheets['sheet2'].Rows[1].Insert(-4121)&;&;这是插入行,具体为什么这样写,
eole.ActiveSheet.PageSetup.Orientation = FX &;&;横向
** 设置单元格宽与高
*!* With eole.ActiveWorkbook.ActiveSheet.Range("A1", "F10")
*!* .RowHeight = 20
*!* .ColumnWidth =10
*!* EndWith
*!* -----设置单元格边框----------
*!* With eole.ActiveWorkbook.ActiveSheet.Range("A1", "F10").Borders
*!* .LineStyle=1&;&;连续线
*!* .Weight =2&;&;细线 1-虚线
*!* .Color = RGB(0, 0, 0)&;&;黑色
*!* ENDWITH
eole.Caption=BT &;&;更改Excel标题栏
eole.Cells.Select&;&;选择整张表
eole.Selection.Font.Size = 10&;&;设置整表默认字体大小为10
*!* eole.Range("A1:F1").Font.Size = 14 '设置为45号字
eole.Selection.Font.Bold ='T'
*!* eole.Range("A1:F1").Font.Bold = True '设置为粗体
*!* eole.Range("A1:F1").HorizontalAlignment=1 &;&; 1 左齐 3 居中 4 右齐
*!* eole.Range("A4:F4").Merge&;&;合并单元格
*!* OLE.Range("B2:F2").NumberFormatLocal = "_ * #,##0.00_ ;_ * -#,##0.00_ ;_ * " '单元格格式
*!*
*!* '----------定义页眉页脚,横向----------------------
*!* OLE.ActiveSheet.PageSetup.RightHeader = "页眉右边"
*!* OLE.ActiveSheet.PageSetup.LeftFooter = "&;10制表人:"
*!* OLE.ActiveSheet.PageSetup.CenterFooter = "&;10复核人:"
*!* OLE.ActiveSheet.PageSetup.Orientation = 2 '横向
****根据字段数求出最后一列
nFldCount = AFIELDS(aFldList,BM) &;&;把当前表的结构信息存放在一个数组中,并且返回表的字段数。1 字段名 2 字段类型 3 字段宽度
LX=FLOOR(nFldCount/26)
Exl=MOD(nFldCount,26)
IF Exl=0
LX=LX-1
Exl=26
ENDIF
Exl=SUBSTR('ABCDEFGHIJKLM
NOPQRSTUVWXYZ',LX,1)+SUBSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ',Exl,1)
*******
go top
**************
FOR i = 1 TO nFldCount
DO CASE
CASE aFldList[i, 2] = "M" &;&;备注型
eole.Columns(I).WrapText = .F.
CASE INLIST(aFldList[i, 2], "N", "F", "I", "B", "Y") &;&; Y货币型 B双精度型 F浮点型 N数值型
eole.Columns(I).NumberFormatLocal = "0.00"
CASE aFldList[i, 2] = "I"&;&; 整型
eole.Columns(I).NumberFormatLocal = "0"
CASE aFldList[i, 2] = "L"&;&; 逻辑型
CASE aFldList[i, 2] = "G"&;&; 通用型
OTHERWISE
eole.Columns(I).NumberFormatL