C#操作excel的打印分页符问题
2021-06-27 13:05
标签:选择 文档 catch 直接 sheet 效果 inter 绝对路径 方法 最近在帮公司winfrom项目组开发一个打印单据的功能,由于之前没有操作过excel(个人技术比较菜。。。),所以在开发过程中遇到了一些应该比较简单的(但我不会)问题。 需求是打印出库单数据,出库单是以excel为模板打印出来,不过需要设定每页分固定的多少条数据,因为太多的话一张单据放不下,可以打印多张单据 我的做法:是将数据导出到excel模板中,首先做好excel模板,只不过把固定的表头设定好就行(当然也可以用code直接写进去,那只需要一个空模板就好了,我这里可以直接在模板上设定好,没有影响)。为了不影响打印效果,使用打印分页符来处理该问题, 1、首先选择微软自带的API:Microsoft.Office.Interop.Excel.Application,实例化一个对象:Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 2、加载模板Microsoft.Office.Interop.Excel.Workbook wb=excel.Workbooks.Open(“文件绝对路径”); 3、我的模板放在了excel的第一个sheet里,所以var sheet = wb.Worksheets[1]; 4、这样模板就可以加载好了,下面就是讲数据填充进去就可以了,当然可以根据需求对应添加,这里只举个例子:sheet.Cells[i, j] = “111”;//将数据添加到sheet的第i行j列 重点来了:将数据加载完后,接下来就需要分页处理了 5、在需要分页的地方:sheet.HPageBreaks.Add(sheet.Range["A12"]);//假如在sheet的第13行开始分页,因为该方法会在指定单元格上方插入分页,即在第12行单元格上方添加分页符。(横向分页符) sheet.VPageBreaks.Add(sheet.Range["F1"]); //在F列单元格的左侧添加分页符 (纵向分页符) 6、然后覆盖所有数据设置打印区域:sheet.PageSetup.PrintArea = "A1:X20";//只打印sheet的A1-X20的区域(矩形区域) 7、保存 :wb.SaveAs(savePath);//SaveAs()方法的参数挺多的,可以查看官方文档传递需要的参数,有如果文件存在则会提示是否覆盖已保存的文件,但是我在做的时候如果已存在的文件处于打开状态就会报错了,我解决的办法是:try...catch{}异常, 判断异常然后给用户一个弹窗提示,检查是否有同名同类型的文件打开。 其他功能还有比如设置分页预览模式查看效果:sheet.ViewMode = ViewMode.Preview; 当然还有很多功能,如果需要可以查询API文档学习,这里就不赘述了。 C#操作excel的打印分页符问题 标签:选择 文档 catch 直接 sheet 效果 inter 绝对路径 方法 原文地址:https://www.cnblogs.com/qyxfirstblog/p/10077260.html
下一篇:Stream API