Excel
COPY TO (m.gcDocumentPath + 'tmpExpense.dbf') TYPE FOX2X AS 866
#INCLUDE XL97Cons.h
LOCAL ARRAY laColumns[2]
laColumns[1] = 'Материал'
laColumns[2] = 'Ед_Изм'
LOCAL ARRAY laPages[10]
laPages[1] = 'Откуда'
laPages[2] = 'Получатель'
laPages[3] = 'Подразделение'
laPages[4] = 'Центр_учета'
laPages[5] = 'Отправитель'
laPages[6] = 'Месяц'
laPages[7] = 'Год'
laPages[8] = 'Группа'
laPages[9] = 'Подкласс'
laPages[10] = 'Класс'
oXl = CreateObject('Excel.Application')
m.oXl.DisplayAlerts = .F.
m.oXl.IgnoreRemoteRequests = .T.
m.oXl.Workbooks.Open (m.gcDocumentPath + 'tmpExpense.dbf')
oSheet = m.oXl.Sheets(1)
m.oSheet.Activate
m.oSheet.Cells(1, 1).Value = 'Год'
m.oSheet.Cells(1, 2).Value = 'Месяц'
m.oSheet.Cells(1, 3).Value = 'Материал'
m.oSheet.Cells(1, 4).Value = 'Ед_Изм'
m.oSheet.Cells(1, 5).Value = 'Класс'
m.oSheet.Cells(1, 6).Value = 'Подкласс'
m.oSheet.Cells(1, 7).Value = 'Группа'
m.oSheet.Cells(1, 8).Value = 'Счет по дебету'
m.oSheet.Cells(1, 9).Value = 'Куда'
m.oSheet.Cells(1, 10).Value = 'Счет по кредиту'
m.oSheet.Cells(1, 11).Value = 'Откуда'
m.oSheet.Cells(1, 12).Value = 'Отправитель'
m.oSheet.Cells(1, 13).Value = 'Подразделение'
m.oSheet.Cells(1, 14).Value = 'Центр_учета'
m.oSheet.Cells(1, 15).Value = 'Получатель'
m.oSheet.Cells(1, 16).Value = 'Количество'
m.oSheet.Cells(1, 17).Value = 'Сумма'
m.oSheet.Range("База_данных").AutoFilter
m.oSheet.Range("A1").Select
m.oSheet.Columns(3).Font.Name = 'Courier New Cyr'
m.oSheet.Columns.AutoFit
m.oSheet.Name = 'Расход'
m.oXl.Sheets("Расход").PivotTableWizard (xlDatabase, "База_данных", "",
"СводнаяТаблица1")
oSheet = m.oXl.ActiveSheet
FOR EACH oPivotField IN m.oSheet.PivotTables(1).PivotFields
IF !INLIST (m.oPivotField.Name, "Количество", "Сумма")
  FOR m.ln1 = 1 TO 12
   m.oPivotField.SubTotals (m.ln1) = .F.
  ENDFOR
ENDIF
ENDFOR
m.oSheet.PivotTables("СводнаяТаблица1").AddFields(@m.laColumns, "Куда",
@m.laPages)
m.oSheet.PivotTables("СводнаяТаблица1").PivotFields("Количество").Orientation
= xlDataField
m.oSheet.PivotTables(1).PivotFields("Данные").PivotItems(1).Name = '
Количество'
IF ThisForm.chkMoney.Value
m.oSheet.PivotTables("СводнаяТаблица1").PivotFields("Сумма").Orientation =
xlDataField
m.oSheet.PivotTables(1).PivotFields("Данные").PivotItems(2).Name = ' Сумма'
m.oSheet.PivotTables(1).PivotFields("Данные").Orientation = xlColumnField
m.oSheet.PivotTables(1).PivotFields("Данные").Position = 2
ENDIF
FOR EACH oField IN m.oSheet.PivotTables(1).DataFields
m.oField.Function = xlSum
ENDFOR
m.oSheet.Columns.AutoFit
m.oSheet.Name = 'Свод'
oSheet = .Null.
m.oXl.Sheets('Свод').Select
m.oXl.ActiveWorkbook.SaveAs(m.lcFile, xlWorkbookNormal)
m.oXl.IgnoreRemoteRequests = .F.
m.oXl.Quit()
oXl = .Null.
ERASE (m.gcDocumentPath + 'tmpExpense.dbf')
WAIT CLEAR

DECLARE INTEGER ShellExecute;
IN SHELL32.DLL;
INTEGER nWinHandle,;
STRING cOperation,;
STRING cFileName,;
STRING cParameters,;
STRING cDirectory,;
INTEGER nShowWindow
LOCAL lnRes
lnRes = ShellExecute(0, "Open", m.lcFile, "", m.gcDocumentPath, 1)
IF m.lnRes < 32
DO CASE
CASE m.lnRes = 2
  MESSAGEBOX("Неверно установлен Excel", 0, _SCREEN.Caption)
CASE m.lnRes = 31
  MESSAGEBOX("Не установлен Excel", 0, _SCREEN.Caption)
CASE m.lnRes = 29
  MESSAGEBOX("Не удалось запустить Excel", 0, _SCREEN.Caption)
CASE m.lnRes = 30
  MESSAGEBOX("Excel в данный момент недоступен", 0, _SCREEN.Caption)
ENDCASE
ENDIF



xl97cons.zip