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. MySQL数据库的隔离级别之可重复读为什么能够有效防止幻读现象的出现

    可重复读隔离级别,不允许存在幻读,该隔离级别之所以能够有效防止幻读现象的出现,是因为可重复读这个隔离级别有用到GAP锁(间隙锁).下面我们以解析SQL语句为切入点,来解释个中原因. 前提条件:①数据库 ...

  2. mysql 8 windows 版本zip方式安装步骤

    mysql 8 windows 版本zip方式安装步骤(下载地址:https://dev.mysql.com/downloads/mysql/)1,解压ZIP文件到指定目录下:如D:\mysql-8. ...

  3. linux利用sh脚本上传下载文件到ftp服务器

    ####本地的/app/awsm/csv2 to ftp服务器上的/awsm/#### #!/bin/sh export today=`date +%Y-%m-%d` ftp -v -n 10.116 ...

  4. 【memcached的常用操作】

    memcache是一个KEY-VALUE存储缓存数据库,常用作网站数据请求的存储; 提供多种API: 语法简单类似于redis; #设置一个键值存储 #添加一个键值存储 #获取键值 #删除键值 #清空 ...

  5. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室

    转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/88110111 在“为网站开发远程直播教室的折腾过程及最终实现”中,介绍了如何使用f ...

  6. SparkR链接mysql数据库(踩坑)

    本文主要讲述sparkR链接Mysql的过程和坑. SparkR的开发可以用RStudio工具进行开发,连接spark可以通过RStudio界面中的Connections进行配置连接;具体方法这里不做 ...

  7. python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌词) - 提示:封装两个类:歌词类、歌词管理类

    自己写的 有更好方案的大佬可以讨论一下 import bisectclass Lrc(): def __init__(self, sec, lrc): self.sec = sec self.lrc ...

  8. wechall MySQL Authentication Bypass II

    首先看看源码 username password分开来验证.但是没做过滤 通常的利用方法是使用union构造已知MD5值的查询. 如果username存在则执行查询,并且为admin.我们用unnio ...

  9. 【Mac】解决「另一个活跃的 Homebrew 进程正在进行中」问题

    问题描述 在安装 tesseract 的语言包时,由于网络下载速度太慢,我按下 ctrl + z 退出了安装,当再次输入安装命令时,系统报错如下: 解决方法 使用以下命令删除 homebrew 进程锁 ...

  10. GC错误

    如果出现GC错误,可设置客户端 set mapreduce.map.java.opts 设置一下 R的GC错误,在顶端设置这个参数 options(java.parameters = "-X ...