C# NPOI生成的Excel文件 打印预览时出现很多空白页
一个简单导出excel功能,我们首先根据自定义模板生成了有数据的Excel文档,然后打开Excel文件,打印Excel文档。
在导入自定义模板的时候进行了打印预览,预览的页数为1。可是当我们通过NPOI插入数据以后生成的Excel文档,进行打印预览却有30页之多,多出的都是一些空白页。
在网上搜索了一下,原因大概是有些没有内容的单元格里有遗留的格式等等吧,但由于上传的文档是由客户自己编辑的。所以不可能做出很严格的限制。那么就要在生成Excel的时候做一些控制了。NPOI里有控制打印区域的方法SetPrintAre();但是要使用这个方法必须知道生成的Excel里有内容的区域范围。以下是我自己写的方法:
但这个方法并不能用,不能够准确的得到Excel里有内容部分的坐标。不知道大家有什么方法可以得到Excel里内容不为空的区域的坐标。如果有别的办法可以解决NPOI打印预览是出现很多空白页的方法也可以说一说。网上查了一下居然没有人提这个问题,难道很少人遇到吗?
在导入自定义模板的时候进行了打印预览,预览的页数为1。可是当我们通过NPOI插入数据以后生成的Excel文档,进行打印预览却有30页之多,多出的都是一些空白页。
在网上搜索了一下,原因大概是有些没有内容的单元格里有遗留的格式等等吧,但由于上传的文档是由客户自己编辑的。所以不可能做出很严格的限制。那么就要在生成Excel的时候做一些控制了。NPOI里有控制打印区域的方法SetPrintAre();但是要使用这个方法必须知道生成的Excel里有内容的区域范围。以下是我自己写的方法:
/// <summary>
/// 设置打印区域
/// </summary>
/// <param name="workbook"></param>
private void SetPrintArea(IWorkbook workbook)
{
int sheetCount = workbook.NumberOfSheets;
for (int i = 0; i < sheetCount; i++)
{
ISheet sheet = workbook.GetSheetAt(i);
int FirstRowNum = sheet.FirstRowNum;
int LastRowNum = sheet.LastRowNum;
int FirstCellNum = sheet.GetRow(FirstRowNum).FirstCellNum;
int LastCellNum = sheet.GetRow(LastRowNum).LastCellNum;
workbook.SetPrintArea(
i, //工作薄 下标0开始
FirstCellNum, //起始列 下标0开始
LastCellNum, //终止列 下标0开始
FirstRowNum, //起始行 下标0开始
LastRowNum //终止行 下标0开始
);
};
}
但这个方法并不能用,不能够准确的得到Excel里有内容部分的坐标。不知道大家有什么方法可以得到Excel里内容不为空的区域的坐标。如果有别的办法可以解决NPOI打印预览是出现很多空白页的方法也可以说一说。网上查了一下居然没有人提这个问题,难道很少人遇到吗?
...全文
相关推荐
c# NPOI 导入和导出EXCEL
实现NPOI对EXECL文件的导入、显示和导出!
C# 用NPOI保存为Excel文件
首先下载NPOI组件,下载地址: 1,官网:http://npoi.codeplex.com/ 2,本地下载:NPOI 2.0 dotnet binary 下载后添加引用(这里有.net2.0版和4.0版的,按需引用) 使用方法如下: /// /// 保存成excel(NPOI方式) /// pr
C# NPOI导出Excel,Words转PDF
C# NPOI导出Excel,Words转PDF,无水印Aspose.Words,Words模版导出PDF
NPOI操作excel之读取、写入excel数据
这是我用C# asp.netasp.net写的关于NPOI操作excel之读取、写入excel数据的例子,简单易懂,希望对于有帮助。
NPOI 插件在 Unity C#中生成 Excel文件
NPOI 插件在 Unity C#中生成 Excel文件 使用介绍博客地址在https://blog.csdn.net/weixin_41717258


