Excel自动化:任何方式知道一张纸将被打印出来多less页?

有时纸张太大而不能打印出来,所以我想避免打印,如果是这样的话。

我目前的计划:

  1. 打开一个excel文档
  2. 复制第一张纸
  3. 创build一个新文档
  4. 在新文档中插入文本和公式
  5. 显示文本时在列上进行自动调整
  6. 打印文本(尚未实施)
  7. 显示公式时在列上进行自动调整
  8. 打印公式(尚未实施)

复制/粘贴的原因是,即使文档/工作表/单元使用密码进行了写保护,也能够自动填充列。

但是我想避免打印它,例如,如果当前表格填充超过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(); 

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

 int numberOfPages = xlWorkSheet2.PageSetup.Pages.Count; 

它工作。