Excel自动化:了解打印纸张的页数有多少?

时间:2011-05-23 13:27:07

标签: c# excel

有时候纸张太大而无法打印出来,所以如果是这种情况,我希望避免打印它。

我目前的计划:

  1. 打开excel文档
  2. 复制第一张表
  3. 创建新文档
  4. 在新文档中插入文字和公式
  5. 显示文字时对列进行自动调整
  6. 打印文字(尚未实施)
  7. 显示公式时对列进行自动调整
  8. 打印公式(尚未实施)
  9. 复制/粘贴的原因是即使文档/工作表/单元格使用密码进行写保护,也能够自动调整列。

    但是我想避免打印它,例如,当前的纸张填充超过100页。我怎么检查这个?

            // Open Excel
            xlApp = new Excel.ApplicationClass();
            xlApp.Visible = true;
    
            // Open document
            xlWorkBook = xlApp.Workbooks.Open(filename, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    
            // Select the sheet we want to copy
            Excel.Sheets xlSheets = null;
            xlSheets = xlWorkBook.Sheets as Excel.Sheets;
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
    
            // Mark all cells and copy
            xlWorkSheet.UsedRange.Copy(misValue);
    
            // Make a new empty document
            Excel.Workbook xlWorkBook2;
            xlWorkBook2 = xlApp.Workbooks.Add(misValue);
    
            // Select the first sheet and insert
            Excel.Worksheet xlWorkSheet2;
            xlWorkSheet2 = (Excel.Worksheet)xlWorkBook2.Worksheets.get_Item(1);
            xlWorkSheet2.Name = "temp";
    
            // Just copies to range starting at cell A1
            Excel.Range range = (Excel.Range)((Excel.Worksheet)xlWorkSheet2).Cells[1, 1];
            range.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteValues, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, misValue, misValue);
            range.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteFormulas, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, misValue, misValue);
    
            // Adjust width of cells (autofit must be called on a column)
            xlWorkSheet2.Columns.AutoFit();
    
            // Show formulas
            xlWorkSheet2.Application.ActiveWindow.DisplayFormulas = true;
            xlWorkSheet2.Columns.AutoFit();
    
            xlWorkSheet2.PrintPreview(misValue);
    
            // Close Excel
            xlWorkBook2.Close(false, false, misValue);
            xlWorkBook.Close(false, false, misValue);
            xlApp.Quit();
    

1 个答案:

答案 0 :(得分:3)

This post回答了。在我的代码中,它将实现为:

int numberOfPages = xlWorkSheet2.PageSetup.Pages.Count;

它有效。