近期做一个关于C# 操作 Word 模板 文档的功能模块,查阅资料,最终完美完成任务,记录下来,以便后面还会用到。

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

第一部分:为了防止动态数据,撑开样式,所以采用的是,无边框的word表格(表格属性-》边框和底纹-》边框(无))即可,A只是表示表格那儿有个单元格而已。

第二部分:用占位符,到时候用真实的数据来替换。

第三部分:产品项为动态生成。

下面看具体代码实现:

using Microsoft.Office.Interop.Word;

using WinForm = System.Windows.Forms;

public class XXController : BaseController
{ public ActionResult Print()
{
// pdf 路径
string PdfPath = AppDomain.CurrentDomain.BaseDirectory + "PurcharseContract.pdf"; // word模板地址
string WordTemplatePath = AppDomain.CurrentDomain.BaseDirectory + @"App_Data\PurcharseContract.docx"; // 定义WORD Application相关
Application appWord = new Application
{
// WORD程序不可见
Visible = false, // 不弹出警告框
DisplayAlerts = WdAlertLevel.wdAlertsNone
}; lock (LockObj)
{
// 打开word模板文件
Document doc = appWord.Documents.Open(WordTemplatePath, OMissing, false); try
{ Table table = doc.Tables[]; // 第1行
table.Cell(, ).Range.Text = "名称";
table.Cell(, ).Range.Text = "编号"; // 第2行
table.Cell(, ).Range.Text = "编码";
table.Cell(, ).Range.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 准备需替换的数据
Dictionary<string, string> datas = new Dictionary<string, string>();
datas.Add("{PurchaseTotalMoney}", "");
datas.Add("{TotalMoneyChCapital}", GetChineseNum((decimal))); // 替换占位符
foreach (var data in datas)
{
SearchReplace(appWord, data.Key, data.Value);
} // 2.填充产品项数据
// 获取word文档里面的表格
Table table = doc.Tables[]; // 第二行产品模板,插入产品项 行
const int RowIdx = ;
foreach (var product in products.GroupBy(x => x.Name))
{
// 始终在第二行产品模板前插入新行
object beforeRow = table.Rows[];
table.Rows.Add(ref beforeRow); foreach (var item in product)
{
string info = "产品编码:ProductCode" + "\r产品名称:ProductName" + "\r规格型号:No";
string info2 = "单位:Unit" + "\r币别:RMB" + "\r品牌:AN";
string info3 = "单价:2" + "\r数量:2" + "\r金额:4"; table.Cell(RowIdx, ).Range.Text = info;
table.Cell(RowIdx, ).Range.Text = info2;
table.Cell(RowIdx, ).Range.Text = info3;
table.Cell(RowIdx, ).Range.Text = DateTime.Now.ToString("yyyy-MM-dd");
table.Cell(RowIdx, ).Range.Text = "";
table.Cell(RowIdx, ).Range.Text = "";
table.Cell(RowIdx, ).Range.Text = "2.0";
table.Cell(RowIdx, ).Range.Text = "备注";
}
} int count = table.Rows.Count; // 删除位于表格倒数第4行的产品模板项
table.Rows[count - ].Delete(); double money = 200.00; // 运费
table.Cell(count - , ).Range.Text = (money * 0.02).ToString("F2"); // 汇总
table.Cell(count - , ).Range.Text = money.ToString("F2"); // 总金额(大写)
table.Cell(count - , ).Range.Text = GetChineseNum((decimal)money); // 3. 弹出 Windows 打印机选择项
WinForm.PrintDialog pd = new WinForm.PrintDialog();
if (pd.ShowDialog() != WinForm.DialogResult.Cancel)
{
// 设置选择的打印机名称
appWord.ActivePrinter = pd.PrinterSettings.PrinterName;
} // true后台打印,false前台打印。
// 必须false,否则后台打印时,尚未打印,就调用了后续的Close,造成打印任务无法执行
object printbackgroud = false; // 4. 开始打印
doc.PrintOut(ref printbackgroud); // 5. 保存为PDF文档
doc.ExportAsFixedFormat(PdfPath, WdExportFormat.wdExportFormatPDF);
}
catch (Exception ex)
{
//throw ex;
}
finally
{
// 关闭Word
if (doc != null)
{
doc.Close(ref SaveOption);
} // 退出word
appWord.Quit(ref SaveOption);
}
} FileStream fs = new FileStream(PdfPath, FileMode.Open); // 6. 返回致客服端提供下载
return File(fs, "application/octet-stream", "Test.pdf");
} }

替换占位符字符串:

/// <summary>
/// 查找并替换文本
/// </summary>
/// <param name="app">word application</param>
/// <param name="strOldText">旧字符</param>
/// <param name="strNewText">新字符</param>
/// <returns>处理结果</returns>
public static bool SearchReplace(Application app, string strOldText, string strNewText)
{
object replaceAll = WdReplace.wdReplaceAll;
object missing = Type.Missing; // 首先清除任何现有的格式设置选项,然后设置搜索字符串 strOldText。
app.Selection.Find.ClearFormatting();
app.Selection.Find.Text = strOldText; app.Selection.Find.Replacement.ClearFormatting();
app.Selection.Find.Replacement.Text = strNewText; bool result = app.Selection.Find.Execute(
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref replaceAll,
ref missing,
ref missing,
ref missing,
ref missing); return result;
}

附属功能,金额转中文大写:

/// <summary>
/// 金额小写转大写
/// </summary>
/// <param name="value">金额</param>
/// <returns>中文大写</returns>
public static string GetChineseNum(decimal value)
{
const string Chinese = "零壹贰叁肆伍陆柒捌玖";
const string Unit = "元十百千万十百千亿十百千兆十百千";
const string Unit2 = "角分"; StringBuilder builder = new StringBuilder();
long u = ;
int i = ; // 整数
while (value >= u)
{
int n = (int)((long)value / u % );
u *= ;
if (n == )
{
i++;
continue;
}
if (i > && i < )
{
builder.Insert(, "元");
}
else if (i > && i < )
{
builder.Insert(, "万");
}
else if (i > )
{
builder.Insert(, "亿");
}
builder.Insert(, Unit[i++]);
builder.Insert(, Chinese[n]);
} // 小数
if ((long)value != value)
{
long value2 = (long)((value - (long)value) * );
int n = (int)(value2 / % );
builder.Append(Chinese[n]);
builder.Append(Unit2[]);
n = (int)(value2 % );
builder.Append(Chinese[n]);
builder.Append(Unit2[]);
}
else
{
builder.Append("整");
} return builder.ToString();
}

参考博客:http://www.jb51.net/article/37615.htm

学无止境,共勉!!!

C#(MVC) Word 替换,填充表格,导出并下载PDF文档的更多相关文章

  1. C# 如何在PDF文档中创建表格

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...

  2. [.NET开发] C# 如何在PDF文档中创建表格

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...

  3. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  4. 程序生成word与PDF文档的方法(python)

    程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用free ...

  5. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  6. Qt 生成word、pdf文档

    需求:将软件处理的结果保存为一个报告文档,文档中包含表格.图片.文字,格式为word的.doc和.pdf.生成word是为了便于用户编辑. 开发环境:qt4.8.4+vs2010 在qt的官网上对于p ...

  7. 用java将简单的word文档换成pdf文档

    用java将简单的word文档换成pdf文档的方式很多,因为很多都没有实际测试过,所以这里就先泛泛的说一下 整体上来看分两种: 1.纯java代码实现,有很多优秀的开源软件可以用,比如poi,itex ...

  8. ABBYY FineReader 15 中保存和导出PDF文档的小细节

    运用ABBYY FineReader OCR文字识别软件,用户能将各种格式的PDF文档保存为新的PDF文档.PDF/A格式文档,以及Microsoft Word.Excel.PPT等格式.在保存与导出 ...

  9. PDF 补丁丁 0.4.2.1013 测试版发布:修复替换PDF文档字体等问题

    新的测试版修复了若干问题,建议下载了旧测试版的用户更新.修复的问题列表: 替换PDF文档字体可能将字体宽度变成0. 书签编辑器在加载XML书签时不显示对应文档的预览. 自动生成书签功能复制文本筛选器后 ...

随机推荐

  1. JavaScript中childNodes、children、nodeValue、nodeType、parentNode、nextSibling详细讲解

    其中属性.元素(标签).文本都属于节点 <title></title> <scripttype="text/javascript"> windo ...

  2. UVA 11551 - Experienced Endeavour(矩阵高速幂)

    UVA 11551 - Experienced Endeavour 题目链接 题意:给定一列数,每一个数相应一个变换.变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少 思路:矩阵高速幂,要 ...

  3. 【Android XMPP】 学习资料收集贴(持续更新)

    系列一: 基于xmpp openfire smack开发之openfire介绍和部署[1] 基于xmpp openfire smack开发之smack类库介绍和使用[2] 基于xmpp openfir ...

  4. BTrace: DTrace for Java

    BTrace: DTrace for Java… ish DTrace first peered into Java in early 2005 thanks to an early prototyp ...

  5. lua function

    This is the main reference for the World of Warcraft Lua Runtime. Note that these are mostly standar ...

  6. Java基础知识强化之IO流笔记34:OutputStreamWriter(Writer字符流的子类)5种write数据方式

    1. OutputStreamWriter (转换流) OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节. 同时OutputS ...

  7. Chrome浏览器离线下载地址(Stable/Beta/Dev)

    最新稳定版:https://www.google.com/intl/zh-CN/chrome/browser/?standalone=1 最新测试版:https://www.google.com/in ...

  8. 8个开发必备的PHP功能(转)

    又是好几天没写博客,今天看到了个不错的文章,就转载到自己的博客,好以后查询方便. 1.传递任意数量的函数参数 我们在.NET或者JAVA编程中,一般函数参数个数都是固定的,但是PHP允许你使用任意个数 ...

  9. jquery获得select option的值 和对select option的操作【转藏】

    获取Select : 获取select 选中的 text : $("#ddlRegType").find("option:selected").text(); ...

  10. Mac Zip命令

    mac终端命令 zip -[parameter] [yourName].zip someFileOrDiectory -q 表示不显示压缩进度状态 -r 表示子目录子文件全部压缩为zip //这部比较 ...