10-利用com组件读取office
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser; namespace _04查找文件中指定字符串的位置
{
class Program
{
static void Main(string[] args)
{
//===========操作word文档==========
string docFileName = @"F:\人力资源行业用语.docx";
string docText = Doc2Text(docFileName); //===========操作pdf文档===========
string pdfFileName = @"F:\2级1课备课.pdf";
string pdfText = Pdf2Text(pdfFileName); //===========操作xls文档===========
string xlsFileName = @"F:\学生信息导入表.xls";
string xlsText = Xls2Text(xlsFileName);
} #region 利用com组件读取office
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <param name="pFileName"></param>
private static void IsExists(string pFileName)
{
if (!File.Exists(pFileName))
{
throw new ApplicationException("指定目录下的无该文件");
}
} //获得word文件的文本内容
public static string Doc2Text(string docFileName)
{
IsExists(docFileName);
//实例化COM
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
object fileobj = docFileName;
object nullobj = System.Reflection.Missing.Value;
//打开指定文件(不同版本的COM参数个数有差异,一般而言除第一个外都用nullobj就行了)
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref fileobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj
); //取得doc文件中的文本
string outText = doc.Content.Text;
//关闭文件
doc.Close(ref nullobj, ref nullobj, ref nullobj);
//关闭COM,关闭word程序
wordApp.Quit(ref nullobj, ref nullobj, ref nullobj);
GC.Collect();
//返回
return outText;
} //获得pdf文件的文本内容,添加 itextsgarp.dll 第三方组件
public static string Pdf2Text(string pdfFileName)
{
PdfReader reader = new PdfReader(pdfFileName);
StringBuilder data = new StringBuilder();
for (int count = ; count <= reader.NumberOfPages; count++)
{
data.Append(PdfTextExtractor.GetTextFromPage(reader, count));
}
return data.ToString();
} //获得excel文件的文本内容
public static string Xls2Text(string xlsFileName)
{
IsExists(xlsFileName);
Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
object nullobj = System.Reflection.Missing.Value;
//打开Excel文档
Microsoft.Office.Interop.Excel.Workbook excel = xlsApp.Workbooks.Open(xlsFileName, nullobj,
nullobj, nullobj, nullobj,
nullobj, nullobj, nullobj,
nullobj, nullobj, nullobj,
nullobj, nullobj, nullobj,
nullobj); //遍历Excel工作表
Microsoft.Office.Interop.Excel.Worksheet ews = null;
StringBuilder builder = new StringBuilder();
try
{
for (int k = ; k <= excel.Worksheets.Count; k++)
{
ews = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[k];
//builder.Append(((Excel.Range)ews.UsedRange).Text);
if (ews.UsedRange.Value2 != null)
{
for (int i = ; i <= ews.UsedRange.Cells.Rows.Count; i++)
{
for (int j = ; j <= ews.UsedRange.Cells.Columns.Count; j++)
{
if (((object[,])(ews.UsedRange.Value2))[i, j] != null)
{
builder.Append(((object[,])(ews.UsedRange.Value2))[i, j]).Append("|");
} }
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
excel.Close(nullobj, nullobj, nullobj);
xlsApp.Quit();
GC.Collect();
}
return builder.ToString();
} //获得PPT文件的文本内容
public static string Ppt2Text(string pptFileName)
{
IsExists(pptFileName);
Microsoft.Office.Interop.PowerPoint.Application pptApp = new Microsoft.Office.Interop.PowerPoint.Application();
object nullobj = System.Reflection.Missing.Value;
Microsoft.Office.Interop.PowerPoint.Presentation ppt = pptApp.Presentations.Open(pptFileName,
Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoFalse);
StringBuilder builder = new StringBuilder();
try
{
foreach (Microsoft.Office.Interop.PowerPoint.Slide slide in ppt.Slides)
{
foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes)
{
if (shape.TextFrame.HasText == Microsoft.Office.Core.MsoTriState.msoTrue)
{
builder.Append(shape.TextFrame.TextRange.Text);
} }
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
ppt.Close();
pptApp.Quit();
GC.Collect();
}
return builder.ToString();
} #endregion
}
}
10-利用com组件读取office的更多相关文章
- 基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
在SqlSugar的开发框架的后端,我们基于Web API的封装了统一的返回结果,使得WebAPI的接口返回值更加简洁,而在前端,我们也需要统一对返回的结果进行解析,并获取和Web API接口对应的数 ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- 利用 Dijit 组件框架打造丰富的用户界面
原文出处:Joe Lennon 从头开始学习 Dojo,第 3 部分 利用 Dijit 组件框架打造丰富的用户界面 Dijit 是什么? Dijit 是 Dojo 工具包的富组件用户界面库.这些组件完 ...
- java调用com组件将office文件转换成pdf
在非常多企业级应用中都涉及到将office图片转换成pdf进行保存或者公布的场景,由于pdf格式的文档方便进行加密和权限控制(类似于百度文库).总结起来眼下将office文件转换 成pdf的方法主要有 ...
- Django【第23篇】:利用Form组件和ajax实现的注册
利用Form组件和ajax实现的注册 一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面 ...
- tp5 使用phpword 替换word模板并利用com组件转换pdf
tp5 使用phpword 替换word模板并利用com组件转换pdf 一.首先composer安装PHPword,就不多说了 二.然后是把模板中要替换的部分用变量代替 三.把原始的模板文件放入项 ...
- 如何用代码读取Office Online Server2016的文档的备注信息
前言 在一个项目上客户要求读取office online server 2016的对文档的备注信息,如下图: 以前思路老纠结在OOS这个在线上,总有以为这个信息存储在某个列表中,其实错了,这个备注信息 ...
- .NET平台开源项目速览(10)FluentValidation验证组件深入使用(二)
在上一篇文章:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 中,给大家初步介绍了一下FluentValidation验证组件的使用情况.文章从构建间的验证器开 ...
随机推荐
- [HttpClient]HttpClient简介
1. 前言 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java应用程序需要直接通过 HTTP 协议来访问网路资源.虽然在 JDK 的 java net包中已 ...
- Uncaught SyntaxError: Unexpected end of input
js报错 原因:输入的意外终止…… 页面代码写的不规范啊……其中的某条语句,没有正常结束…… 或者部分语句“‘’”双引号,单引号没有配对好,被转义了之类的……错误造成的 代码: <script ...
- 适应手机端的jQuery图片滑块动画
一款比较特别的jQuery图片滑块插件,它不仅在PC浏览器上可以使用,而且更适合在手机端的网页中使用.这款jQuery插件不仅可以定义图片切换的方向,而且可以即时切换图片切换的动画方式,可以有平移.翻 ...
- js 联系电话验证实现
var str=$('#tele').val(); var regPartton=/1[3-8]+\d{9}/; ...
- 人见人爱a*b 杭电2035
求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A= ...
- UVa 129 Krypton Factor困难的串 (dfs 递归搜索)
回溯法,只需要判断当前串的后缀,而不是所有的子串 #include<iostream> #include<cstdio> using namespace std; ]; int ...
- [Ioi2005]River
设f[i][j][k]表示i上游最近的一个伐木场为j且在i所在的子树里共建了k个伐木场(不包含在i的)的最小运费和 设v为u的儿子,dist[u]为u到0号点的距离. 则当i>=j时 f[u][ ...
- bzoj2487: Super Poker II
Description I have a set of super poker cards, consisting of an infinite number of cards. For each p ...
- Swift互用性:与 Objective-C 的 API 交互(Swift 2.0版更新)-备
本页包含内容: 初始化 可失败初始化 访问属性 方法 id 兼容性(id Compatibility) 空值和可选值 扩展(Extensions) 闭包(Closures) 比较对象 Swift 类型 ...
- poj 1364
http://poj.org/problem?id=1364 #include<cstdio> #include<cstring> #include<algorithm& ...