Browse Source

Reports, Export xlsx

MaiXinRong 7 years ago
parent
commit
8283943ebb
1 changed files with 15 additions and 4 deletions
  1. 15 4
      Forms/ReportsFrm.pas

+ 15 - 4
Forms/ReportsFrm.pas

@@ -585,7 +585,10 @@ begin
       Node := extvReport.Items[iIndex];
       Node := extvReport.Items[iIndex];
       if Node.HasChildren or (Node.Checked <> csChecked) or (Node.Data = nil) then Continue;
       if Node.HasChildren or (Node.Checked <> csChecked) or (Node.Data = nil) then Continue;
       vTemplateNode := TTemplateNode(Node.Data);
       vTemplateNode := TTemplateNode(Node.Data);
-      sOutputFileName := sPath + ExtractSimpleFileName(vTemplateNode.FileName) + '.xls';
+      if IsExcel2010 then
+        sOutputFileName := sPath + ExtractSimpleFileName(vTemplateNode.FileName) + '.xlsx'
+      else
+        sOutputFileName := sPath + ExtractSimpleFileName(vTemplateNode.FileName) + '.xls';
       if FileExists(vTemplateNode.FileName) then
       if FileExists(vTemplateNode.FileName) then
         PrintReport(vTemplateNode, False, True, sOutputFileName, GetTemplateXlsFileName);
         PrintReport(vTemplateNode, False, True, sOutputFileName, GetTemplateXlsFileName);
     end;
     end;
@@ -598,8 +601,16 @@ var
   sFileName: string;
   sFileName: string;
 begin
 begin
   sFileName := extvReport.Selected.Text;
   sFileName := extvReport.Selected.Text;
-  if (PrintStartPage <= PrintEndPage) and SaveFile(sFileName, '.xls') then
-    ExportXlsReport(PrintStartPage, PrintEndPage, sFileName, PreviewComXML);
+  if IsExcel2010 then
+  begin
+    if (PrintStartPage <= PrintEndPage) and SaveFile(sFileName, '.xlsx') then
+      ExportXlsReport(PrintStartPage, PrintEndPage, sFileName, PreviewComXML);
+  end
+  else
+  begin
+    if (PrintStartPage <= PrintEndPage) and SaveFile(sFileName, '.xls') then
+      ExportXlsReport(PrintStartPage, PrintEndPage, sFileName, PreviewComXML);
+  end;
 end;
 end;
 
 
 procedure TReportsForm.AfterExport;
 procedure TReportsForm.AfterExport;
@@ -1438,7 +1449,7 @@ procedure TReportsForm.ExportXlsReport(AStartPage, AEndPage: Integer;
       // 康博士代码中写批量打印是,用Printer.Canvas,打印当前时,用PreviewBox.Canvas。不懂为什么
       // 康博士代码中写批量打印是,用Printer.Canvas,打印当前时,用PreviewBox.Canvas。不懂为什么
       //APrintCom.OutputToExcelRangeXMLEx(PreviewBox.Canvas, AStartPage,
       //APrintCom.OutputToExcelRangeXMLEx(PreviewBox.Canvas, AStartPage,
           //AEndPage, GetTemplateXlsFileName, AFileName, Border, ExcelMode)
           //AEndPage, GetTemplateXlsFileName, AFileName, Border, ExcelMode)
-      APrintCom.OutputToExcelFileOE(PreviewBox.Canvas, AStartPage, AEndPage, GetTemplateXlsFileName, ExcelMode, Border, nil)
+      APrintCom.OutputToExcelFileOE(PreviewBox.Canvas, AStartPage, AEndPage, AFileName, ExcelMode, Border, nil)
     else
     else
       APrintCom.OutputToExcelFile(PreviewBox.Canvas, AStartPage,
       APrintCom.OutputToExcelFile(PreviewBox.Canvas, AStartPage,
           AEndPage, GetTemplateXlsFileName, AFileName, ExcelMode, Border);
           AEndPage, GetTemplateXlsFileName, AFileName, ExcelMode, Border);