rt,
这个就是我的图片,是word文档生成的图片,是试卷的密封线内的东西,竖排的,现在的问题是,如何利用c#操作word制作出这样的效果
本来想做个智能试卷生成系统的,一上来倒是被这个难住了,大家帮我下,谢谢了先,顶着有分
这个就是我的图片,是word文档生成的图片,是试卷的密封线内的东西,竖排的,现在的问题是,如何利用c#操作word制作出这样的效果
本来想做个智能试卷生成系统的,一上来倒是被这个难住了,大家帮我下,谢谢了先,顶着有分
解决方案 »
- MVC中如何构建类型IEnumerable<T>的模型项
- 关于VS.net 2008 源程序乱码的问题
- 在C#中调用SQL存储过程出错
- 发现高手果然是不仅仅凭学历的!(和大家一起共勉)
- 在C#的继承中,能否在派生类中将基类的成员的访问级别降一个档次,象C++一样
- 如何datagrid中加入checkbox取得checkbox的值 屏蔽一些列(如何把不需要的列不要显示出来)
- 那位有以下几本书的中文电子版,谢谢!
- 一个关于跨平台调用的问题
- 关于部署安装程序的问题。
- 在DataGrid中添加了模板列checkbox后,如何通过勾选checkbox然后点击删除按钮来删除记录
- 请教关于从数据绘制图像的奇怪问题
- datagridview单元格闪烁
此为关键步骤,在需要竖排的地方,先文字的字体、样式设置后,然后设置文字方向,再选择该段文字,为其插入一个书签(BookMark),并为该书签命名。
2.利用C#打开,替换该书签即可,代码如下:
注意使用以下代码时,需要引入Word库 Word.ApplicationClass App = null; //Word应用程序对象
Word.Document doc = null; //Word文档对象
object missing = System.Reflection.Missing.Value;
object miss=Type.Missing;
if (App==null) App = new Word.ApplicationClass();//创建word对象
App.Visible = false; //设置word不可见
//根据模板创建新文档,不过这个模板文件的名称放置在app.config文件中
object oTemplate = ConfigurationSettings.AppSettings["TemplateOfLetter"];//获取文件名
doc = App.Documents.Add(ref oTemplate, ref missing,ref missing, ref missing);//创建新文档
doc.Activate();//激活文档
Object objBookMark = "姓名";//姓 名 创建书签对象
string name="张三";
doc.Books.get_Item(ref objBookMark).Range.Text =name;//替换该书签,可为任意值了
//打印输出
doc.PrintOut( ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
ref missing,ref missing,ref missing,ref missing,ref missing);
//关闭新创建的文档
object SaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;//创建关闭选项
if (doc!=null)
doc.Close( ref SaveChanges, ref missing, ref missing);
//退出Word
if (App!=null)
App.Application.Quit(ref miss, ref miss, ref miss);
App=null;
doc = null;
3.注意事项
a)在控制Word时,应注意释放已占用的word对象,所以上述代码最好写在try/catch/finally中,把资源释放代码写在finally中
b)如果在word中用多个文字需要竖排,最好使用表格或文本框对象,强烈建议使用文本框对象来放置竖排文本,这样不会影响页面设置,而单纯的竖排文字方向会导致整个页面全部文字变成竖排,不利用其他文本的放置
c)如果需要一次性生成多个文档并打印输出的话,可以考虑使用多线程技术,并利用进度栏进行进度显示,该部分内容不在本主题的讨论范围。
d)关于效率问题,操作word进行文档输出,其效率并不算高,但好在word的使用范围广,不需要在客户的机器上另行安装其他报表工具,且用户有能力对报表模板进行样式及不涉及数据输出等小范围的页面调整,并且用户较为熟悉,打印控制也较为方便,如果不是对效率有太高的要求,使用Word做为打印模板是比较合适,自已的程序的测试数据,生成3879个文件并打印输出,用时3223秒,基本上是0.9秒生成并输出一个,考虑到打印机的速度(目前打印机,能达到30张/s的都算是很快的了),这样的效率是完全可以接受的。
录制的宏就是你操作Word的每一步用相应代码表示的方法
只不过代码是VBA的,应该能看懂,
可以结合19楼使用模板的功能
偶也是用这种办法进行和word有关的操作,很有效
偶也是用这种办法进行和word有关的操作,很有效