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

问题描述 投票:0回答:3

我正在尝试在互操作 Excel 文件中添加分页符,但目前还无法做到。有时什么也没有发生,有时我会得到异常“无法设置 Range 类的 PageBreak 属性”。

这是模板文件。

Excel 模板文件

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

这是我尝试过的一些代码(已添加)。

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);
}

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

非常感谢任何帮助。

c# asp.net excel-interop
3个回答
1
投票

我发现纸张上的白色区域实际上是打印区域,所以我刚刚更新了

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

这就是我为解决问题所做的:

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


0
投票

将 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);

0
投票

workSheet.Cells["A7"].EntireRow.PageBreak = true;

© www.soinside.com 2019 - 2024. All rights reserved.