c# WPS DLL及其调用
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及其调用的更多相关文章
- DLL中调用约定和名称修饰(一)
DLL中调用约定和名称修饰(一) 调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来 ...
- Windows下gcc以及Qt的DLL文件调用之总结(三种方法)
DLL与LIB的区别 :1.DLL是一个完整程序,其已经经过链接,即不存在同名引用,且有导出表,与导入表lib是一个代码集(也叫函数集)他没有链接,所以lib有冗余,当两个lib相链接时地址会重新建立 ...
- Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数
Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~ 呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...
- Delphi Dll 动态调用例子(3)-仔细看一下
http://blog.163.com/bxf_0011/blog/static/35420330200952075114318/ Delphi 动态链接库的动态和静态调用 为了让人能快速的理解 静态 ...
- VS2013 生成sqlite3动态连接库及sqlite3.dll的调用
一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...
- 托管非托管Dll动态调用
原文:托管非托管Dll动态调用 最近经常看到有人问托管非托管Dll调用的问题.对于动态库的调用其实很简单.网上很多代码都实现了Dll的静态调用方法.我主要谈论下动态库的动态加载. 对于托管动态库,实现 ...
- 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 ...
- C++生成dll以及调用(函数)和类
C++新手,方法可能有很多,此方法仅仅是自己实验并可行,详细步骤如下: 生成dll文件和lib文件: (1) 新建项目-windows桌面向导,选择动态链接.dll以及空项目: (2)复制代码(头文件 ...
- Delphi 类库(DLL)动态调用与静态调用示例讲解
在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ...
随机推荐
- source .bashrc 报错:virtualenvwrapper.sh: There was a problem running the initialization hooks.
在Ubuntu下安装完virtualenv.virtualenvwrapper,然后设置环境文件 .bashrc 接着 source .bashrc,产生错误信息 首先确认了 libpam-mount ...
- solve the promble of VMware Workstation Ubuntu18.04 ethernet interface losting
$ ifconfig -aens33: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 00:**:**:**:**:** txqu ...
- Mysql-表的基本操作
一 存储引擎介绍 二 表介绍 三 创建表 四 查看表结构 五 数据类型 六 表完整性约束 七 修改表ALTER TABLE 八 复制表 九 删除表 一 .存储引擎介绍 存储引擎即表类型,mysql根据 ...
- HAProxy负载均衡策略
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.HAProxy是支持虚拟主机的,HAProxy的优点能够补充Nginx的一些 ...
- c# 在WebBrowser中用SendMessage模拟鼠标点击
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- LFS搭建第一天
1. 前期准备 vmware 软件安装 LFS iso 下载:http://ftp.osuosl.org/pub/lfs-livecd/lfslivecd-x86-6.3-r2145.iso 2.新建 ...
- C语言堆排序
堆是一种类似二叉树的数据结构,分为最大堆和最小堆,最大堆得定义是当前节点必须大于左右子节点,堆中所有节点都要符合这个定义.最小堆反之.这一点不同于二叉树排序.假设有数组int a[10] = {90, ...
- 解决$ go get google.golang.org/grpc上的包被墙的问题
今天get grpc包的时候 $ go get google.golang.org/grpc 发现拉不下来被墙了,在github.com上搜索grpc,clone到工程目录中,运行命令 go inst ...
- 20155236 2016-2017-2《Java程序设计》课程总结
20155236 2016-2017-2<Java程序设计>课程总结 作业链接汇总 预备作业1:对专业学习的展望,课程方面.师生关系的建议 预备作业2:在实践中学习,自己的相关经验以及C语 ...
- CF543E Listening to Music
题面 空间只有$64\text{MB}$!!! 题解 (据说正解是毒瘤分块套分块) 按照权值从大到小排序,对所有能够覆盖到它的区间的左端点打个标记 按照值域建一棵主席树就可以了 区间查询最大值,用$m ...