В Visual Foxpro, как экспортировать в Excel с полным
Я ищу, чтобы экспортировать таблицу из Visual Foxpro 5.0, чтобы преуспеть с итогом для одного столбца. Я знаю, что вы можете рассчитать сумму (столбец), но я не знаю, как включить это в экспорт.
4 ответа
Я знаю, что вы можете рассчитать сумму (столбец), но я не знаю, как включить это в экспорт
Короткий ответ: ты не можешь.
Вы можете использовать команду VFP: COPY TO файл Excel XL5 для вывода данных в указанный файл Excel, но вычисленные значения не будут включены.
НО, после того как вы записали данные, вы можете использовать VFP Automation of Excel, чтобы либо записать вычисленное значение в определенную ячейку, либо вы можете запустить Excel для вычисления и поместить результат в указанную ячейку.
Если вы еще не сделали VFP Automation of Excel, вам может потребоваться Google для этого, поскольку он включает в себя ряд команд, которые должны варьироваться в зависимости от ваших конкретных потребностей.
Удачи
Если вам это нужно в Excel, тогда зачем вообще использовать sum? Excel умеет суммировать. Если вам действительно нужно, вы можете сделать это, просто создав курсор с добавленной строкой для хранения суммы. Что-то вроде:
select f1, f2, f3 from myTable ;
union all ;
select '', '', sum(f3) as f3 ;
from myTable group by 1,2
Создание данных Excel из курсора / таблицы - более сложная часть, но есть много способов (то есть: просто копирование в виде файла с разделителями с заголовком, который вы создаете.CSV, который затем можно открыть с помощью Excel). ИМХО одним из лучших способов является передача данных с использованием набора записей ADO. Вы можете искать код VFP2Excel в Интернете. Я написал и опубликовал много ее вариантов (я добавлю ссылку, если скоро ее найду - для VFP5 могут потребоваться небольшие изменения для команды \ функций, недоступной в VFP5).
(Или вы можете сделать это другим способом и напрямую получить данные из Excel, используя ADO - QueryTables).
OK нашел много ссылок, некоторые из них:
Я подумал о другом способе получить вычисленную сумму в файл Excel, но это своего рода "кладж", и в файле Excel это действительно не будет динамический расчет, а вместо этого будет ячейка, которая может статически удерживайте вычисленное значение VFP.
Хорошо, вот "Kludge"....
Откройте таблицу данных VFP и выполните расчет итогов.
APPEND BLANK, чтобы добавить новую пустую запись, и в одном из полей ЗАМЕНИТЬ ее значение на рассчитанную сумму.
Теперь сделайте свой файл COPY TO Excel XL5
Все ваши данные будут записаны, и эти данные будут включать в себя рассчитанную итоговую запись с ее значением.
ПРИМЕЧАНИЕ. Если необходимо, чтобы строки Excel находились в последовательности, отличной от исходной таблицы данных VFP, перед запуском COPY TO... выполните запрос SQL, чтобы получить все записи в нужном порядке, и запишите результаты в новый стол / курсор переписать.
Затем вы должны добавить "Пустой бланк" к результирующей таблице / курсору и использовать его для "Копировать в...".
Удачи
Вы можете использовать лист 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