我在我的C#应用程序中使用NPOI版本2.5.3,并尝试设置缩放选项(适合所有列到一页)。 从这些问题here和here中看来,这似乎很容易做到。
问题:
所以,当我使用下面的代码时出现了问题。 所有的配置都适合一页的宽度和高度。 我认为这是因为sheet.FitToPage = true造成的。
当执行以上代码时,我在Excel中得到以下输出。 所以在那之后,我尝试将其设置为false,如下所示。
当更改配置时,它会呈现如下所示的“无缩放”。 无论我尝试什么,似乎都无法让它起作用。我尝试了各种设置,但没有任何效果。我开始认为这可能是我使用版本的错误。几乎所有我找到的示例都是针对Java POI的,所以我不确定是否只是一个方法问题。
期望输出:
以下是我要做的事情。只需将缩放选项设置为适合1页的列即可。如果有人能帮助我或指点我方向,那就太棒了。
private void SetPrintSettings(XSSFSheet sheet)
{
sheet.SetMargin(MarginType.BottomMargin, 0.5);
sheet.SetMargin(MarginType.TopMargin, 0.5);
sheet.SetMargin(MarginType.LeftMargin, 0.45);
sheet.SetMargin(MarginType.RightMargin, 0.45);
sheet.SetMargin(MarginType.HeaderMargin, 0.3);
sheet.SetMargin(MarginType.FooterMargin, 0.3);
sheet.Autobreaks = true; //auto breaks
sheet.FitToPage = true; //THIS SETS IT TO ALL FIT ON ONE PAGE
var PrintSetup = sheet.PrintSetup;
PrintSetup.FitWidth = 1; //fit width onto 1 page
PrintSetup.FitHeight = 0; //don't care about height
PrintSetup.Landscape = true;
PrintSetup.PaperSize = 3; //paper size 11x17
}
当执行以上代码时,我在Excel中得到以下输出。 所以在那之后,我尝试将其设置为false,如下所示。
private void SetPrintSettings(XSSFSheet sheet)
{
sheet.SetMargin(MarginType.BottomMargin, 0.5);
sheet.SetMargin(MarginType.TopMargin, 0.5);
sheet.SetMargin(MarginType.LeftMargin, 0.45);
sheet.SetMargin(MarginType.RightMargin, 0.45);
sheet.SetMargin(MarginType.HeaderMargin, 0.3);
sheet.SetMargin(MarginType.FooterMargin, 0.3);
sheet.Autobreaks = true; //auto breaks
sheet.FitToPage = false;
var PrintSetup = sheet.PrintSetup;
PrintSetup.FitWidth = 1; //fit width onto 1 page
PrintSetup.FitHeight = 0; //don't care about height
PrintSetup.Landscape = true;
PrintSetup.PaperSize = 3; //paper size 11x17
}
当更改配置时,它会呈现如下所示的“无缩放”。 无论我尝试什么,似乎都无法让它起作用。我尝试了各种设置,但没有任何效果。我开始认为这可能是我使用版本的错误。几乎所有我找到的示例都是针对Java POI的,所以我不确定是否只是一个方法问题。
期望输出:
以下是我要做的事情。只需将缩放选项设置为适合1页的列即可。如果有人能帮助我或指点我方向,那就太棒了。
apache poi
中,可以通过使用Sheet.setFitToPage
、PrintSetup.setFitWidth
和PrintSetup.setFitHeight
的组合来设置。请参见https://dev59.com/Pp7ha4cB1Zd3GeqPkoY6#41856100。不确定`NPOI`是否使用相同的方法。 - Axel Richter