在visualfoxpro中如何用total导出到excel

在visualfoxpro中如何用total导出到excel,excel,sum,export,visual-foxpro,foxpro,Excel,Sum,Export,Visual Foxpro,Foxpro,我希望将一个表从VisualFoxpro5.0导出到excel,其中一列的总数为。我知道您可以计算总和(列),但我不知道如何将其包括在导出中 我知道你们可以计算和(列),但我不知道如何包括在内 这是出口商品 简而言之,你不能 您可以使用VFP的命令:复制到excel文件XL5将数据输出到指定的excel文件中,但不包括计算值 但是,在写入数据后,您可以使用Excel的VFP Automation将计算值写入特定单元格,也可以让Excel为您运行计算并将结果放入指定单元格 如果您还没有完成Exce

我希望将一个表从VisualFoxpro5.0导出到excel,其中一列的总数为。我知道您可以计算总和(列),但我不知道如何将其包括在导出中

我知道你们可以计算和(列),但我不知道如何包括在内 这是出口商品

简而言之,你不能

您可以使用VFP的命令:复制到excel文件XL5将数据输出到指定的excel文件中,但不包括计算值

但是,在写入数据后,您可以使用Excel的VFP Automation将计算值写入特定单元格,也可以让Excel为您运行计算并将结果放入指定单元格

如果您还没有完成Excel的VFP自动化,您可能会想用谷歌搜索一下,因为它涉及许多命令,这些命令需要根据您的具体需要而有所不同


祝您好运

您可以使用excel工作表作为模板。然后将FoxPro中的特定单元格填充到此模板中,模板中的函数和格式将与您的数据一起使用

lcExcelFile = "output.xls" && your ouput

oExcelObject = CREATEOBJECT('Excel.Application')
oExcelWorkbook = ;
    oExcelObject.APPLICATION.Workbooks.OPEN(sDir + "\" + "template.xls") && your template
oActiveExcelSheet = oExcelWorkbook.Worksheets("sheet").ACTIVATE
oExcelSheet = oExcelWorkbook.Worksheets("sheet")

WAIT WINDOW "Developing Microsoft Excel File..." + CHR(13) + "" + CHR(13) + ;
    "Passing formatting information to Excel." + CHR(13) + "" NOWAIT

SELECT cTmp && your data table or cursor
GOTO TOP
oExcelSheet.Cells(1,1).VALUE = sTitle
nRow = 3 && moving past title 
sNote = ""

DO WHILE NOT EOF()

    nRow = nRow + 1
    && Insertint Records
    oExcelSheet.Cells(nRow,1).VALUE = STR(cTmp.INlocx)
    oExcelSheet.Cells(nRow,2).VALUE = ALLTRIM(cTmp.INacct) + '-' + ALLTRIM(cTmp.INmr_)
    oExcelSheet.Cells(nRow,3).VALUE = ALLTRIM(cTmp.INpnam)
    oExcelSheet.Cells(nRow,4).VALUE = ALLTRIM(cTmp.INCARR)
    oExcelSheet.Cells(nRow,5).VALUE = ALLTRIM(cTmp.INADR1) + ALLTRIM(cTmp.INADR2)
    oExcelSheet.Cells(nRow,6).VALUE = ALLTRIM(cTmp.INCITY)
    oExcelSheet.Cells(nRow,7).VALUE = ALLTRIM(cTmp.INSTAT)
    oExcelSheet.Cells(nRow,8).VALUE = STR(cTmp.INZIP)
    oExcelSheet.Cells(nRow,9).VALUE = STR(cTmp.INAREA)
    oExcelSheet.Cells(nRow,10).VALUE = STR(cTmp.INPHON)
    oExcelSheet.Cells(nRow,11).VALUE = ALLTRIM(cTmp.INPOL_)
    oExcelSheet.Cells(nRow,12).VALUE = ALLTRIM(cTmp.INGRP_)
    oExcelSheet.Cells(nRow,13).VALUE = ALLTRIM(cTmp.INPOLH)
    oExcelSheet.Cells(nRow,14).VALUE = STR(cTmp.INEFDT)
    oExcelSheet.Cells(nRow,15).VALUE = STR(cTmp.INETDT)
    oExcelSheet.Cells(nRow,16).VALUE = ALLTRIM(cTmp.INRELATE)



    SELECT cTmp
    SKIP
ENDDO

&&saving template AS output
oExcelWorkbook.SAVEAS(lcExcelFile)
oExcelObject.QUIT
RELEASE oExcelObject

如果你在excel中需要它,那为什么还要求和呢?Excel知道如何求和。如果您确实需要这样做,那么您可以通过简单地创建一个游标,并添加一行来保存sum。比如:

select f1, f2, f3 from myTable ;
union all ;
select '', '', sum(f3) as f3 ;
from myTable group by 1,2
从光标/表格中创建excel数据是更复杂的部分,但有很多方法(即:简单地复制为一个带有您创建的.CSV头的分隔文件,然后可以由excel打开)。IMHO最好的方法之一是使用ADO记录集传递数据。您可以在internet上搜索VFP2Excel代码。我已经编写并发布了它的许多变体(如果我很快找到一个链接,我将添加一个链接-对于VFP5,它可能需要对VFP5中不可用的命令\函数进行轻微更改)

(或者您也可以用另一种方法,使用ADO-QueryTables直接从Excel获取数据)

OK找到了许多链接,其中一些:


我确实想到了另一种方法将计算出的总数输入Excel文件,但这是一种“混乱”,在Excel文件中,它实际上不是动态计算,而是一个可以静态保存VFP计算值的单元格

好的,这是“乱七八糟”…
打开VFP数据表并运行总计计算。
“追加空白”以添加新的空记录,并在其中一个字段中用计算的总数替换其值

现在将您的复制到excel文件XL5
您的所有数据都将被写入,这些数据将包括您计算的总记录及其值

注意:如果您需要Excel行与原始VFP数据表的顺序不同,则在复制到之前。。。运行SQL查询以将所有记录按所需顺序进行,并将结果写入新表/游标READWRITE。
然后在结果表/光标上添加空白,并使用它复制到


祝你好运,恐怕你的建议有缺陷。COM调用很慢,你不应该做很多COM调用,尤其是当它们根本不需要的时候。您可以简单地使用多种技术在一次快照中传输数据,而不是在记录中循环并逐个设置单元格值。例如,您可以使用ADO和CopyRecordset或QueryTables.Add。也可以将数据复制并粘贴为以制表符分隔的数据。或者,您可以简单地将数据放入数组(VFP5中最多65000个元素),然后立即传输设置“范围”的值。同意塞廷的说法,他只是提供了一个解决方案,但他的反对意见是有效的。@尼克,我决不会说“您不能”-事实上,您可以,由“导出”提供您并不真正指导出命令(无论如何,谁会使用该命令)。