C#设置EXCEL打印纸张表单格式问题

因为工作上的需要,之前同事做了一个用于打印的Windows Service,后来交由我继续开发维护。
  其实就是通过轮询数据库取得数据,然后调用COM进行打印的。但纸张的表单格式需要自定义,这个我在打印机和传真的服务器属性中已经新建好,暂且为它命名为“TEMPForm”。之前同事是通过枚举转换来取得该表单格式并赋值给Excel.Worksheet的PageSetup.PaperSize,代码如下:

oSheet.PageSetup.PaperSize = (Excel.XlPaperSize)Enum.Parse(typeof(Excel.XlPaperSize), "TEMPForm");

  之前这个是可以正常使用的,可后来不行了,会抛出异常,提示“TEMPForm”不存在。我比较在意的是之前为什么可以使用,因为枚举中是没有“TEMPForm”的,它是怎么转换成功的?
  后来我改用System.Drawing.Printing.PaperSize取得“TEMPForm”的PagerSize的RawKind成员再转换为Excel.XlPaperSize赋值给oSheet.PageSetup.PaperSize,成功!但问题又来了,似乎这个做法有副作用,打印机的纸张来源被改动了——由“拖纸器”变成了“手动进纸”,如此一来影响了客户的正常使用——打印是需要用到拖纸器自动进纸的。

  希望能有朋友为我解决以上问题:枚举转换能成功或者使用System.Drawing.Printing.PaperSize而又可以使用拖纸器。
 

    该问题今天我已经处理,在服务启动时就先获取了打印表单格式,在需要的时候再转换并赋值到PagerSize,并在EXCEL模板中做了相应的调整,解决。
posted @ 2007-12-30 09:28  Carrod  阅读(2523)  评论(0)    收藏  举报