zoukankan      html  css  js  c++  java
  • Word报表开发磨难记

    系统中的报表采用的是C#Word Automation方案,工作流程如下:

    1.      预先创建Word报表模版

    2.      动态填充XML数据

    3.      生成DOC文档后

    4.      借助于PDF995虚拟打印机生成PDF文件

    开发环境是Windows XP 英文专业版,Visual Studio 2005 英文专业版,Office 2003英文专业版。

    最终用户环境是Windows XP中文专业版,Office XP中文专业版。

    由于种种原因导致了开发环境和终端用户环境的不同,经常是调试成功的系统部署后却无法正常运行,几乎全部是兼容性问题,而且很难解决。

    起初在数据填充方式上采用了XML映射的方法,直接向WORD传送XML数据,确实是很方便,编码量很少,后来才发现Office XP不支持该功能,后面只能采用硬编码的方式操作Word中的表格,迁移时颇费了一番周折,幸好代码量不是很大,这里比较难处理的是不规则表格的处理,单元格的合并与拆分,一定要耐心调试,现在才发现不用XML绑定或许是正确的选择,估计它是无法完成合并拆分的重任,看来硬编码还是必不可少的。这里贴部分代码:

    Page X of Y问题,用户环境中创建的PDF文件中的页码有问题,总是出现Page 1 of 1, Page 2 of 1,很明显的错位问题,打开生成的Word文档发现页码正常,手工打印出PDF文件,页码也正常,起初不知道是什么原因,就采用了下面的方法来测试,结果引发了另外的一个问题。

    原程序是对DOT模版填充数据完毕后直接调用打印功能生成PDF文档的,这里尝试在DOC文档生成后暂时不打印,而是退出Word程序,休眠一段时间后再重新打开该文档直接打印。结果在用户环境中测试时,发现document.open函数总是抛出异常,google了一下微软有描述该问题,但解决方法似乎很复杂,摸不着头脑,调试了将近半天没有进展,于是尝试新的解决方案。

    Google了一下Page X of Y,发现内容还不少,原来Office中对此处理有Bug,网上找到了一个解决方法http://word.mvps.org/FAQs/AppErrors/PageXofY.htm,直接打补丁,下载了Office XP SP3安装测试后,一切OK了。

  • 相关阅读:
    ASP.NET实现进度条效果【转】
    删除指定创建日期前的文件夹、文件
    MS SQL SERVER执行大脚本文件时,提示“内存不足”的解决办法
    solr之functionQuery(函数查询)【转】
    解决Jenkins连接git时报错Permission denied (publickey)
    vscode csharp c#开发 自动引入命名空间
    nginx配置后外网无法访问
    jenkins node 版本无法使用最新的版本
    jenkins npm install WARN checkPermissions Missing write access 权限问题
    小程序setData只修改对象中的某个属性的方法
  • 原文地址:https://www.cnblogs.com/swnuwangyun/p/649294.html
Copyright © 2011-2022 走看看