C#——操作Word并导出PDF
一、操作Word
首先引用这个DLL,Microsoft.Office.Interop.Word,官方提供的。
可以操作word文字,表格,图片等。
文字通过替换关键字的方式实现
document.Paragraphs[i].Range.Text = temptext.Replace("{$village}", "HELLO WORLD");
表格可以自己获取模板中已有的表格
Microsoft.Office.Interop.Word.Table table1 = document.Tables[1];
table1.Cell(1, 1).Range.Text = "TEST1";
也可以自己创建表格,可以设计表头,单元格等。
int tableRow = 6 ;
int tableColumn = ;
//定义一个Word中的表格对象
Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs[i].Range,
tableRow, tableColumn, ref Nothing, ref Nothing);
//默认创建的表格没有边框,这里修改其属性,使得创建的表格带有边框
table.Borders.Enable = 1;
table.Cell(1, 1).Merge(table.Cell(2, 1));//纵向合并
table.Cell(1, 1).Range.Text = "牌号/代码"; table.Cell(1, 2).Merge(table.Cell(2, 2));//纵向合并
table.Cell(1, 2).Range.Text = "标准编号";
有一篇文章写的很详细可以参考下:https://www.cnblogs.com/xh6300/p/5915717.html
public bool CreateWord(DataTable dttmp)
{
bool result = false;
Object Nothing = Missing.Value;
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document document = null;
string path = @"C:\Users\Administrator\Desktop\BB\合同模版.doc";
object FileName = @"C:\Users\Administrator\Desktop\BB\" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";
application.Visible = false;
document = application.Documents.Open(path); int rowNum = dttmp.Rows.Count;
for (int i = ; i <= document.Paragraphs.Count; i++)
{
string temptext = document.Paragraphs[i].Range.Text;
//以下为替换文档模版中的关键字
if (temptext.Contains("{$village}"))
document.Paragraphs[i].Range.Text = temptext.Replace("{$village}", "HELLO WORLD");
Microsoft.Office.Interop.Word.Table table1 = document.Tables[];
table1.Cell(, ).Range.Text = "TEST1";
if (temptext.Contains("{$Table1}"))
{
//设置表格的行数和列数
int tableRow = + rowNum;
int tableColumn = ;
//定义一个Word中的表格对象 Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs[i].Range,
tableRow, tableColumn, ref Nothing, ref Nothing);
//默认创建的表格没有边框,这里修改其属性,使得创建的表格带有边框
table.Borders.Enable = ;//这个值可以设置得很大
table.Cell(, ).Merge(table.Cell(, ));//纵向合并
table.Cell(, ).Range.Text = "牌号/代码"; table.Cell(, ).Merge(table.Cell(, ));//纵向合并
table.Cell(, ).Range.Text = "标准编号"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "单重\n(MT)"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "张数"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "重量\n(MT))"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "单价\n(元/吨)"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "金额(人民币)"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "交货期"; table.Cell(, ).Merge(table.Cell(, ));//横向合并
table.Cell(, ).Range.Text = "规格(mm)";
table.Cell(, ).Range.Text = "厚度";
table.Cell(, ).Range.Text = "宽度";
table.Cell(, ).Range.Text = "宽度"; table.Cell(, ).Merge(table.Cell(, ));
table.Cell(, ).Range.Text = "表面加工";
table.Cell(, ).Range.Text = "边缘";
table.Cell(, ).Range.Text = "精度"; }
} object format = document.SaveFormat;
document.Save(); application.Quit(ref Nothing, ref Nothing, ref Nothing);
return result; }
二、Word导出PDF
public bool WordToPDF(string sourcePath)
{
bool result = false;
Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document document = null;
try
{
application.Visible = false;
document = application.Documents.Open(sourcePath);
string PDFPath = sourcePath.Replace(".doc", ".pdf");//pdf存放位置
if (!File.Exists(@PDFPath))//存在PDF,不需要继续转换
{
document.ExportAsFixedFormat(PDFPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);
}
result = true;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
result = false;
}
finally
{
//document.Close();
}
return result;
}
服务器部署可以参考;https://www.cnblogs.com/5426z/articles/4865312.html
C#——操作Word并导出PDF的更多相关文章
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- Itext导出PDF,word,图片案例
iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...
- Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,htm
Ireport 报表导出 Poi + ireport 导出pdf, doc ,excel ,html 格式 下面是报表导出工具类reportExportUtils 需要导出以上格式的报表 只需要调用本 ...
- jacob 操作word转pdf
项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览p ...
- Java使用IText(VM模版)导出PDF,IText导出word(二)
===============action=========================== //退款导出word public void exportWordTk() throws IOE ...
- 使用POI导出Word(含表格)的实现方式及操作Word的工具类
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Java操作word转pdf
如果转换后出现乱码,是doc格式的文档的话请转换为docx!!! 下载相关jar包和一个授权到2099年的凭证文件. 链接: https://pan.baidu.com/s/1xudkKqR1-TLL ...
- Spring Boot 系列教程18-itext导出pdf下载
Java操作pdf框架 iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好 ...
随机推荐
- Nginx 高级配置-状态页配置
Nginx 高级配置-状态页配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 建议将nginx的监控状态的值通过zabbix或者Open-Falcon之类的监控工具来监控状态,并 ...
- Leetcode周赛165
目录 找出井字棋的获胜者 思路 代码 不浪费原料的汉堡制作方案 思路 代码 统计全为 1 的正方形子矩阵 思路 代码 分割回文串 III 思路 代码 找出井字棋的获胜者 思路 模拟. 代码 class ...
- redis常用操作(测试必备)
连接redis redis的安装及基础配置,参考:https://www.cnblogs.com/UncleYong/p/9882843.html redis中,数据是key-value方式存储,ke ...
- python 文本全选
这个是一个控制框有效果 # encoding: utf-8 from Tkinter import * def printentry(event): print("click on" ...
- Python input() 函数
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型. Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获 ...
- 使用EventBus对模块解耦(附实例)
用于模块间解耦,通过发布订阅的方式调用,每个人只负责自己的那部分. 写个小例子,比如现在有三个模块,订单.购物车.优惠券,由不同的人负责开发. 负责订单模块的人现在需要写个生成订单的方法,生成订单的逻 ...
- 洛谷 P2615 神奇的幻方
传送门 I'm here! 思路 这个题,我们可以直接去模拟,因为范围很小,且\(N\)都是奇数 直接构造一个矩阵,初始值都为\(0\),然后\(while\)循环,根据题目给出的\(4\)个条件进行 ...
- GOOD BYE OI
大米饼正式退役了,OI给我带来很多东西 我会的数学知识基本都在下面了 博客园的评论区问题如果我看到了应该是会尽力回答的... 这也是我作为一个OIer最后一次讲课的讲稿 20190731 多项式乘法 ...
- 洛谷P1578 奶牛牧场(悬线法思想)
题目 悬线法的思想--即扫描线的思想,每个矩阵必定是由两个障碍来构成左右边界或者上下边界. 如果此两个障碍组成了左右边界,枚举这两个障碍中途更新这两个障碍之间的矩阵上下边界,并且更新最大值. 考虑如何 ...
- 华为鸿蒙OS发布!方舟支持混合编译,终将可替换安卓?
前言 有关于鸿蒙的消息之前也有说过,就在昨天下午,华为举行了2019开发大会,正式推出了鸿蒙os系统(Harmony).其相关负责人表示,也是基于微软内核的全场景分布式OS 鸿蒙凭借微内核的优势, ...