回 帖 发 新 帖 刷新版面

主题:请高手进入

以下承接2009年3月12日标题为:“请VFP高手帮忙解决8位日期转10位日期的问题”文


您不愧是高手!谢谢您了!

SELECT kucun
nCount=AFIELDS(MyArray)
GO TOP 
WAIT WINDOW "正在生成Excel文件,请稍候......" NOWAIT
oExl=CREATEOBJECT("Excel.Application")
oExl.Workbooks.Add
oExl.Worksheets("sheet1").Activate
FOR I=1 TO nCount
    oExl.ActiveSheet.Columns(I).ColumnWidth=20
    oExl.Cells(1,I).Value=MyArray(I,1)
Endfor
SCAN 
    FOR J=1 TO nCount
        cField=MyArray(J,1)
        oExl.Cells(RECNO()+1,J).Value=&cField
    ENDFOR 
ENDSCAN 
WAIT CLEAR
oExl.Visible=.t.

通过测试,可运行。不过还有些小的细节,能修正一下就更好了。

1、以“〇”开头的数字,转入Excel文件后,“〇”不能有丢失。请比较:标签号“A81744704810001”的资产序列号,DBF文件中为“02005053”,Excel文件中为“2005053”。
2、字符型字段,自动左对齐,数值型字段,右对齐。
3、关于在Excel中的金额问题,小数点后应自动显示2位(在导入前就设定好,不想在Excel中重新设置),对于超过2位的,只截取2位,不做四舍五入处理(如遇单价、数量、或兑换率等除外)。
4、关于“类别”、“地点”,可否不导入?因为有时可以原封不动的将EXCEL表内的数据粘贴到另一个格式一样的表中,还有,我想向您学习怎样处理其中的无用信息这类事件。
5、生成Excel Sheet后,能否做到只要用户输入一个文件名后,自动存盘推出当前操作界面,不要由用户去另存盘。
6、在执行此程序时,能否设置成由用户自行选择文本文件?(注:因为从Oracle下导出的文本文件名每次是不一样的,因此每次还要将先前的文本文件重命名,然后,才能用新的覆盖原“资产库存明细报表”,这样很麻烦)。

谢谢!谢谢!

(因在上次的无法给您加分,限定最高只能得50分,故转入此条)

回复列表 (共9个回复)

沙发

1-5:
SELECT 资产序列号,资产原值,当月折旧;
    FROM kucun INTO CURSOR aaa        &&此处选取“资产序列号,资产原值,当月折旧”3个字段--可根据实现需要随意选取


nCount=AFIELDS(MyArray)
GO TOP 
WAIT WINDOW "正在生成Excel文件,请稍候......" NOWAIT
oExl=CREATEOBJECT("Excel.Application")
oExl.Workbooks.Add
oExl.Worksheets("sheet1").Activate
FOR I=1 TO nCount
    oExl.ActiveSheet.Columns(I).ColumnWidth=20
    oExl.Cells(1,I).Value=MyArray(I,1)
Endfor
SCAN 
    FOR J=1 TO nCount
        cField=MyArray(J,1)
          IF MyArray(J,2)="C"
               oExl.Cells(RECNO()+1,J).Value="'"+&cField
        ELSE
             oExl.Cells(RECNO()+1,J).Value=&cField
            IF MyArray(J,2)="N"
                oExl.Cells(RECNO()+1,J).NumberFormatLocal =  "0.00_ "
             Endif
        ENDIF
    ENDFOR 
ENDSCAN 
WAIT CLEAR
cFileName=PUTFILE("","","XLS")
oExl.ActiveWorkbook.SaveAs(cFileName)
oExl.Visible=.t.           

6."自行选择文本文件":

txtFileName=GETFILE("TXT","","确定")
appe from (txtFileName) sdf

板凳


“高手”实不敢当!我在给你的邮件中已经说明,我只不过一名医疗专业出身、从事行政管理工作的爱好者而已。

3 楼

经测试,全部通过。谢谢!谢谢!

为使程序更加完美,如果您有时间的话,我想您一定能将程序改进的更合理些的。

比如:

1、导入Excel Sheet中的宽度,最好为自适应;
2、在输入文本文件名时,如用户没找到所要的文件或改变注意取消作业时,应关闭当前程序直接退出,而不是停留在程序代码屏幕内;
3、当执行完程序后,用户选择不存盘时,程序应正常退出。
4、我在单位测试,在生成Excel表时,速度特别慢,打慨用了4~5分钟时间,在不升级硬件的情况下,速度能否提升(硬件环境:奔4 1.8HZ,内存1G;数据量:25栏,8000条记录)?

4 楼

请高手帮忙解决上述不存盘退出等问题。

5 楼

请高手们帮忙解决上述问题呀!
谢谢!

6 楼

oExl.ActiveWorkbook.close(.t.)

7 楼

oExl.ActiveWorkbook.close(.t.)
请问将上述代码插入哪一行可行?因我是初学者,请指点。

cFileName=PUTFILE("","","XLS")
oExl.ActiveWorkbook.SaveAs(cFileName)
oExl.Visible=.t. 

我将它放在最后一行,可是不生效耶!

我的意思是:
1、当在执行程序过程中,在输入文件名,遇到没找到文件或改变注意,取消作业时,要直接退出;
2、试运行后,已生成Excel格式文档页面,但没有必要存盘时,要直接退出。

让人有选择的余地......

关于宽度自适应问题和速度能否提升问题也请帮忙解决。谢谢!

8 楼

放到最后,退出时使用:
oExl.ActiveWorkbook.close(.f.)  &&不保存退出
oExl.ActiveWorkbook.close(.t.)  &&直接保存退出

9 楼

[quote]放到最后,退出时使用:
oExl.ActiveWorkbook.close(.f.)  &&不保存退出
oExl.ActiveWorkbook.close(.t.)  &&直接保存退出
[/quote]

不成功呀!我已抓报错图了,可惜呀,在回复中我无法将抓图上传!

我将以新发帖的形式进行新发帖,然后附上附件。请参看2009年4月4日新贴“请高手进入(2)”

我来回复

您尚未登录,请登录后再回复。点此登录或注册