1.dll分享(含xsl及docx的dll)

链接:https://pan.baidu.com/s/1c1ImV14OndmvIb4W-_WL2A 密码:d2rx

2.方法:

  1.先在类的前面(类外面)添加引用:

  using MSWord = Microsoft.Office.Interop.Word;

  2.初始化

public static object oMissing;
private Excel.Application oXL;
private Excel.Workbook oWB;
private Excel.Worksheet oSheet;
private Excel.ChartObject chartObject;
private MSWord._Application oWord;
private MSWord._Document oDoc;
private MSWord.Range rang = null; #region 初始化Office
/// <summary>
/// 初始化Office
/// </summary>
private void InitOffice()
{
oMissing = System.Reflection.Missing.Value;
#region 实例化一个Excel.Application对象
oXL = new Excel.Application();
oXL.Visible = false; //设置为不可见 //String strFileName = Application.StartupPath + "\\compare.xls"; //模板文件地址
String strFileName = ByteConvertWord(Properties.Resources.compare, "2"); oWB = oXL.Workbooks.Add(strFileName); //以模板为基础生成文档
oSheet = oWB.ActiveSheet as Excel.Worksheet;
#endregion if (Directory.Exists(Application.StartupPath + "\\tempImg") == false)//如果不存在就创建file文件夹
{
Directory.CreateDirectory(Application.StartupPath + "\\tempImg");
} #region 创建一个Word应用程序实例
oWord = new MSWord.Application();
oWord.Visible = false; //设置为不可见 //模板文件地址,这里假设在X盘根目录
//object oTemplate = Application.StartupPath + "\\comparisonTCM.docx";
object oTemplate = ByteConvertWord(Properties.Resources.comparisonTCM, "1");
//以模板为基础生成文档
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
#endregion }
#endregion /// <summary>
/// 二进制数据转换为word文件
/// </summary>
/// <param name="data">二进制数据</param>
/// <param name="fileName">word文件名</param>
/// <returns>word保存的相对路径</returns>
public string ByteConvertWord(byte[] data, string fileName)
{
string savePath = @"\\" + fileName + ".gif";
string filePath = Application.StartupPath + savePath;
FileStream fs;
if (System.IO.File.Exists(filePath))
{
fs = new FileStream(filePath, FileMode.Truncate);
}
else
{
fs = new FileStream(filePath, FileMode.CreateNew);
}
BinaryWriter br = new BinaryWriter(fs);
br.Write(data, 0, data.Length);
br.Close();
fs.Close();
return filePath;
}

  3.开始写(可以设置字体,大小)

//excel表格转为图片并添加至word
oSheet.Cells[i - 14, 10] = Math.Round(data_list[i][0], 2);
                oSheet.Cells[i - 14, 12] = data_list[i][4];
chartObject = (Excel.ChartObject)oSheet.ChartObjects("图表 解剖2");
            string dissection_2_chart_image = @"" + Application.StartupPath + "\\tempImg\\dissection_2_chart_image.png";
            chartObject.Chart.Export(dissection_2_chart_image, "png");             oDoc.Bookmarks.get_Item("dissection_front_chart").Select();
            oDoc.Application.Selection.InlineShapes.AddPicture(dissection_chart_image);
            oDoc.Bookmarks.get_Item("dissection_back_chart").Select();
            oDoc.Application.Selection.InlineShapes.AddPicture(dissection_2_chart_image);
//word中的文本框获取及插入
oDoc.Bookmarks.get_Item("img_A1").Select();
MSWord.InlineShape inlineShape = oDoc.Application.Selection.InlineShapes.AddPicture(@"" + Application.StartupPath + "\\tempImg\\F_Image_One.png");
oDoc.Bookmarks.get_Item("img_A2").Select();
inlineShape = oDoc.Application.Selection.InlineShapes.AddPicture(@"" + Application.StartupPath + "\\tempImg\\B_Image_One.png");
oDoc.Bookmarks.get_Item("img_B1").Select();
inlineShape = oDoc.Application.Selection.InlineShapes.AddPicture(@"" + Application.StartupPath + "\\tempImg\\F_Image_Two.png");
oDoc.Bookmarks.get_Item("img_B2").Select();
inlineShape = oDoc.Application.Selection.InlineShapes.AddPicture(@"" + Application.StartupPath + "\\tempImg\\B_Image_Two.png");
//文字添加
oDoc.Bookmarks.get_Item("home_name").Range.Text = cim[0].customername;
//属性设置
rang.Font.Color = MSWord.WdColor.wdColorRed;

  4.保存

private void SaveAndClose()
{
try
{
//设置禁止弹出保存和覆盖的询问提示框
oXL.DisplayAlerts = false; object paramMissing = Type.Missing;
string paramExportFilePath = Application.StartupPath + @"\tmpA\document_Ctmp.pdf";
//string paramExportFilePath = Application.StartupPath + @"\tempImg\comparisonReportTCM.pdf";
MSWord.WdExportFormat paramExportFormat = MSWord.WdExportFormat.wdExportFormatPDF;
MSWord.WdExportOptimizeFor paramExportOptimizeFor = MSWord.WdExportOptimizeFor.wdExportOptimizeForPrint;
MSWord.WdExportRange paramExportRange = MSWord.WdExportRange.wdExportAllDocument;
MSWord.WdExportItem paramExportItem = MSWord.WdExportItem.wdExportDocumentContent;
MSWord.WdExportCreateBookmarks paramCreateBookmarks =
MSWord.WdExportCreateBookmarks.wdExportCreateWordBookmarks; oDoc.ExportAsFixedFormat(paramExportFilePath, paramExportFormat, false, paramExportOptimizeFor,
paramExportRange, 0, 0, paramExportItem, true, true, paramCreateBookmarks, true, true, false, ref paramMissing);
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
finally
{
WReport.Close(oDoc, oWord, oSheet, oWB, oXL);
}
}

c# WPS DLL及其调用的更多相关文章

  1. DLL中调用约定和名称修饰(一)

    DLL中调用约定和名称修饰(一) 调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来 ...

  2. Windows下gcc以及Qt的DLL文件调用之总结(三种方法)

    DLL与LIB的区别 :1.DLL是一个完整程序,其已经经过链接,即不存在同名引用,且有导出表,与导入表lib是一个代码集(也叫函数集)他没有链接,所以lib有冗余,当两个lib相链接时地址会重新建立 ...

  3. Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数

    Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~    呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...

  4. Delphi Dll 动态调用例子(3)-仔细看一下

    http://blog.163.com/bxf_0011/blog/static/35420330200952075114318/ Delphi 动态链接库的动态和静态调用 为了让人能快速的理解 静态 ...

  5. VS2013 生成sqlite3动态连接库及sqlite3.dll的调用

    一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...

  6. 托管非托管Dll动态调用

    原文:托管非托管Dll动态调用 最近经常看到有人问托管非托管Dll调用的问题.对于动态库的调用其实很简单.网上很多代码都实现了Dll的静态调用方法.我主要谈论下动态库的动态加载. 对于托管动态库,实现 ...

  7. C#使用CLR/C++的DLL间接调用Native C++的DLL

    C#使用CLR/C++的DLL间接调用Native C++的DLL 开发环境:win 7  VS2010 简介:C#的exe使用CLR/C++间接调用Native C++的DLL. 第一步:创建一个C ...

  8. C++生成dll以及调用(函数)和类

    C++新手,方法可能有很多,此方法仅仅是自己实验并可行,详细步骤如下: 生成dll文件和lib文件: (1) 新建项目-windows桌面向导,选择动态链接.dll以及空项目: (2)复制代码(头文件 ...

  9. Delphi 类库(DLL)动态调用与静态调用示例讲解

    在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ...

随机推荐

  1. PHP目前比较常见的五大运行模式

    做 php 开发的应该都知道 php 运行模式概念吧,本文将要和大家分享的是关于php目前比较常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作 ...

  2. STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置

    cube基本配置,外设开启编码器,串口2 可能大家在设置的时候有这个错误 错误:error:  #20: identifier "TIM_ICPOLARITY_BOTHEDGE" ...

  3. nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)

    准备工作,需要安装好几个软件,详细的过程请参考下面的文章(http://www.cnblogs.com/iini/p/9314246.html)这里说的非常详细,而且也有工具在云盘,对于初学者非常友好 ...

  4. 通过SSH服务登陆linux服务器(版本RHEL7)

    通过SSH服务登陆linux服务器(版本RHEL7) SSH服务概述:是一种能够以安全的方式提供远程登陆的协议,也是目前远程管理linux系统的首选方式.在此之前,我们一般使用FTP或者telnet来 ...

  5. Linux入门进阶第五天——用户管理(帐号管理 )下

    一.身份切换 为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root 1.su命令 一般地,推荐使用su - / su - username的形式来 ...

  6. 20155211实验2 Windows口令破解

    20155211实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...

  7. 20155223 2006-2007-2 《Java程序设计》第一周学习总结

    20155223 2006-2007-2 <Java程序设计>第一周学习总结 学习内容 提问 第三章:Java没有能够计算开根号的运算符,我遇到开根运算该怎么办? 第四章:Java有没有比 ...

  8. WPF Color、String、Brush转换

    原文:WPF Color.String.Brush转换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/detai ...

  9. [NOIp2018]铺设道路 贪心

    LG传送门 考场上写的\(O(nlogn)\)做法,具体思想是把深度从低到高排个序,开一个标记数组,每次加入的时候标记当前位置并判断:如果当前加入的位置两边都被标记过,则下次的贡献-1,若两边都没有被 ...

  10. angularJS ng-repeat中的directive 动态加载template

    有个需求,想实现一个html组件,传入不同的typeId,渲染出不同的表单元素. <div ng-repeat="field in vm.data"> <magi ...