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类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ...
随机推荐
- select2 多选 排序(版本3.4.6)
使用select2多选,页面选择值的顺序与传到control的值的顺序不一致,为了方便,没有改变本来js文件,在页面上面通过change方法改变. 1.页面代码(添加修改使用同一个页面) <li ...
- 执行 sql 报错未缓冲查询,错误码 2014
sql语句为 SELECT COUNT(id) AS tp_count FROM `tableName` WHERE `status` = 0 AND `source` = 1 AND ( `end_ ...
- HTTP請求
HTTP[超文本傳輸協議]是因特網上應用最為廣泛的一種網絡傳輸協議,送油的WWW文件都必須遵守這個標準. HTTP是一個基於TCP/IP通信協議來產地數據(html文件,圖片文件,查詢結果等). HT ...
- 准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure )----转
原文:http://blog.csdn.net/t710smgtwoshima/article/details/8215037 Recall(召回率);Precision(准确率);F1-Meat ...
- postgres 输出数据集的自定义函数
定义一个可输出数据集自定义函数有多种方法 1,先定义结构,再使用结构输出结果 CREATE TYPE compfoo AS (f1 int, f2 text); CREATE FUNCTION get ...
- SSM-CRUD入门项目——新增与校验
新增 分析: 在Index.jsp页面点击新增,弹出对话框(模态框) 数据库查询部门列表显示在模态框中 用户输入数据完成操作 我们先把模态框构建出来,并对新增按钮添加事件,点击按钮弹出模态框: < ...
- 20155207 2006-2007-2 《Java程序设计》第3周学习总结
20155207 2006-2007-2 <Java程序设计>第X周学习总结 教材学习内容总结 比较字符串实际字符内容是否相同,不要使用==,要使用equals() 关于类的语法问题 pu ...
- 20155226 2016-2017-2 《Java程序设计》第2周学习总结
20155226 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 了解了基本类型以及初识类类型,熟悉了注释,变量及运算符的使用. 了解了几种运算方式但还不算熟 ...
- 20155232 2016-2017-3 《Java程序设计》第6周学习总结
20155232 2016-2017-3 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 异常处理 1.从应用程序来看,如果要将数据从源取出,可以使用输入串流. 2.如果要将 ...
- 【转载】Direct3D基础知识
原文:Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决. 1. D3D体系结构 D3D与GDI处与同一层次,区 ...