如何在互操作 excel 工作表中添加水平分页符

How to add horizontal page break in interop excel worksheet

我正在尝试在互操作 excel 文件中添加分页符,但还无法执行。有时什么也没有发生,有时我会得到异常 "Unable to set the PageBreak property of the Range class".

这是模板文件。

Excel Template file

我是 Interop 的新手 Excel。我使用 excel 文件作为 PageBreakPreview 中的模板。当我在新行中插入数据时,我想在该行之后移动分页符。 我看到很多建议的答案,但无法完成。

这是我试过的一些代码(coomented)。

object misValue = System.Reflection.Missing.Value;
Excel.Application xlApp = new Excel.Application();

Excel.Workbook xlWorkBook = null;
Excel.Worksheet worksheet = null;
try
{
    xlWorkBook = xlApp.Workbooks.Open(Server.MapPath("~//Templates//ExcelTemplate.xlsx")
        , 0, true, misValue, misValue, misValue, misValue, Excel.XlPlatform.xlWindows, misValue, misValue, true, misValue, misValue, misValue, misValue);
    worksheet = (Excel.Worksheet)xlWorkBook.Worksheets[1];
    worksheet.Activate();
    worksheet.Cells[6, 1] = "Item1";
    worksheet.Cells[6, 1].Font.Bold = true;
    worksheet.Cells[7, 1] = "content";
    //worksheet.HPageBreaks.Add(sheet.Range["A7"]);
    //worksheet.HPageBreaks.Add(sheet.Range["A13"]);
    //xlWorkBook.Worksheets[0].ViewMode = ViewMode.Preview;
    //worksheet.Rows[5].PageBreak = xlPageBreakManual;
    //xlApp.ActiveWindow.View = Excel.XlWindowView.xlNormalView;
    //worksheet.Cells.PageBreak = (int)Excel.XlPageBreak.xlPageBreakNone;
    //worksheet.Rows[4].PageBreak = Excel.XlPageBreak.xlPageBreakNone;
    //worksheet.Rows[8].PageBreak = Excel.XlPageBreak.xlPageBreakManual;
    //worksheet.ResetAllPageBreaks();
    //worksheet.HPageBreaks[1].Location = worksheet.Range["A8"];
    xlWorkBook.SaveAs(Server.MapPath("~//TempFiles//ExcelFile_Copy.xlsx"));
}
catch (Exception ex)
{
    //ex
}
finally
{
    xlWorkBook.Close(0);
    xlApp.Quit();

    Marshal.ReleaseComObject(worksheet);
    Marshal.ReleaseComObject(xlWorkBook);
    Marshal.ReleaseComObject(xlApp);
}

添加新数据时,分页符应到达下一行的末尾。

非常感谢任何帮助。

将 Excel 工作表分成多页并将查看模式设置为分页预览。

workbook.Worksheets[0].HPageBreaks.Add(sheet.Range["A7"]);
workbook.Worksheets[0].HPageBreaks.Add(sheet.Range["A13"]);
workbook.Worksheets[0].ViewMode = ViewMode.Preview;

ps : A7和A13是断点

已编辑

通过调用 HPageBreaks.RemoveAt() 方法删除指定的水平分页符。

workbook.Worksheets.HPageBreaks.RemoveAt(7);

我发现 sheet 上的白色区域实际上是打印区域,所以我刚刚更新了 xlWorkBook.Worksheets[1].PageSetup.PrintArea 并分配了新的打印区域值以将 PageBreak 移动到第 7 行下,我认为这是自动分页符.如果我错了,请大家指正。

这是我解决问题的方法:

xlWorkBook.Worksheets[1].PageSetup.PrintArea = "$A:$H";