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 = 1; 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 = 1; 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 = 1; i <= ews.UsedRange.Cells.Rows.Count; i++)
                        {
                            for (int j = 1; 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
    }
}
时间: 2024-10-30 17:07:21

10-利用com组件读取office的相关文章

[.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office

打造一个很简单的文档转换器 - 使用组件 Spire.Office 目录 Spire.Office 介绍 库引用 界面预览 代码片段 Spire.Office 介绍 关于 Spire.Office,它是一个专门为开发人员创建,读取,写入设计的库,转换和从打印 word 文档文件.作为一个独立的 .NET组件,它不需要在机器上安装微软的 Word 等办公软件.然而,它可以将微软的“文档创建功能”集成到任何开发人员的网络应用程序中.它是一个可靠的 MS Word 的API,可以执行许多Word文档处

.NET读取Office文件内容(word、excel、ppt)

引用命名空间 1 using Microsoft.Office.Core; 2 using Word = Microsoft.Office.Interop.Word; 3 using Excel = Microsoft.Office.Interop.Excel; 4 using PowerPoint = Microsoft.Office.Interop.PowerPoint; Word文件的读取 1 public string ReadFile() 2 { 3 string text = str

数据字典生成工具之旅(5):DocX组件读取与写入Word

由于上周工作比较繁忙,所以这篇文章等了这么久才写(预告一下,下一个章节正式进入NVelocity篇,到时会讲解怎么使用NVelocity做一款简易的代码生成器,敬请期待!),好了正式进入本篇内容. 这篇会介绍DocX读写WORD,DocX组件功能强大,可以很容易的读写WORD,相对于NPOI强大很多,性能也好很多,做这个工具之所以会选择这个组件,主要是看重该组件的表格合并功能. 阅读目录 使用模版生成简历 读写表格数据 合并单元格 工具源代码下载 学习使用 回到顶部 使用模版生成简历 下面将以一

java调用com组件将office文件转换成pdf

在非常多企业级应用中都涉及到将office图片转换成pdf进行保存或者公布的场景,由于pdf格式的文档方便进行加密和权限控制(类似于百度文库).总结起来眼下将office文件转换 成pdf的方法主要有两种: 1.利用jcob调用ms office的com组件,将office文档转换成pdf. 2.利用jcob调用acrobat将office文档转换成pdf. 在实际使用中发现.因为office不同所以本的文件格式不一致,所以不论什么第三方的转化工具都不可能完美的兼容全部office版本号,最好的

Asp.Net Core中利用Seq组件展示结构化日志功能

在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看,果然,很多东西没掌握,至此,花点时间看了下日志的相关操作.利用日志服务来查看日志数据. 本文地址:https://www.cnblogs.com/CKExp/p/9246788.html 本文Demo的地址:https://gitee.com/530521314/LogPanel.git 一.日志

如何用代码读取Office Online Server2016的文档的备注信息

前言 在一个项目上客户要求读取office online server 2016的对文档的备注信息,如下图: 以前思路老纠结在OOS这个在线上,总有以为这个信息存储在某个列表中,其实错了,这个备注信息其实就是word文档的备注信息,微软采用openxml开发的OOS,因此我也采用openxml读取备注信息的思路进行尝试,结果发现原来是可以的,成功效果图如下: 注意: OpenXml格式只有office2007以及以上版本才支持的格式,如果office97-2003格式的文档是二进制格式的文档,o

蓝牙利用协议栈API读取设备MAC地址

最近在移植QQ物联协议,需要读取设备mac地址. 读取CC2541设备MAC地址的方法,有直接读取mac寄存器,也可以调用协议栈API.这里采用的是调用API的形式. 1 /*利用协议栈API读取MAC地址*/ 2 static uint8 macaddr[B_ADDR_LEN]={0}; // mac 地址 3 uint8_t macstr[13] = {0}; 4 5 GAPRole_GetParameter(GAPROLE_BD_ADDR, macaddr); 6 sprintf((cha

Spring利用propertyConfigurer类 读取.property数据库配置文件

1.Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中 一些动态设定的值(value),在XML中替换为占位该键($key$)的值, .properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的灵活性. 2.在Spring中,使用PropertyPlaceholderConfigurer可以在XM

iPhone 和 iPad的ios 开发中 利用 WebViewJavascriptBridge组件,通过 UIWebView 对Html进行双向通讯

本文转载至 http://blog.csdn.net/remote_roamer/article/details/7261490 WebViewJavascriptBridge 项目的 官网 https://github.com/marcuswestin/WebViewJavascriptBridge 主要过程: 下载WebViewJavascriptBridge.h 和 WebViewJavascriptBridge.m文件到自己的项目中,并添加到项目. 在相应的.h文件中 使用#import