C#读取word中表格数据的方法实现

前些日子有一个项目需要从word文件中取表格数据并进行处理,网上大部分方案都是基于office的com组件实现,但是这样有一个缺点,如果电脑里没有安装office将无法使用,因为之前操作excel都是使用的NPOI,所以理所当然的想用NPOI解决此问题。

于是找到了如下代码

private List<string> GetDoc(string Path)
        {
            if (Path == "")
                return null;    //文件路径为空
            List<string> Result = new List<string>();    //结果容器

            FileStream stream = new FileStream(Path, FileMode.Open);    //打开流
            XWPFDocument docx = new XWPFDocument(stream);
            var list = new List<XWPFTableCell>();

            //循环遍历表格内容
            foreach (var row in docx.Tables[0].Rows)
            {
                foreach (var cell in row.GetTableCells())
                {
                    if (!list.Contains(cell))
                    {
                        list.Add(cell);
                        Result.Add(cell.GetText());
                    }
                }
            }
            stream.Close();
            return Result;    //关闭文件流(很关键,否则会导致下一个文件无法大开)

        }

但是这样做又有一个缺点 ,NPOI仅支持.docx格式的文件,如果读取.doc会直接报错!

于是后续又找到了另一开源组件freeSpire。有如下代码

        private List<string> GetDocX(string Path)
        {
            if (Path == "")
                return null;    //文件路径为空
            List<string> Result = new List<string>();

            Spire.Doc.Document doc = new Spire.Doc.Document();
            doc.LoadFromFile(Path);

            TextBox textbox = doc.TextBoxes[0];
            Spire.Doc.Table table = textbox.Body.Tables[0] as Spire.Doc.Table;

            foreach (TableRow row in table.Rows)
            {
                foreach (TableCell cell in row.Cells)
                {
                    foreach (Paragraph paragraph in cell.Paragraphs)
                    {
                        Result.Add(paragraph.Text);
                    }
                }
            }
            return Result;
        }

但是不知道什么原因,并不能抓取.doc文件中的表格。

随后尝试了其getText()函数确定可以直接抓取文字内容,初步判断可能是格式问题。

有考虑过自己写匹配函数对文本内容进行分析,但由于格式过于复杂,很多通用性问题无法解决后放弃。如果格式不复杂的话,也不失为一种解决方法。

最后采用的方法是先利用Spire组件将.doc转换为.docx后再利用NPOI进行内容处理,效果拔群!!!

        private string ChangeToDocx(string Path)
        {
            if (Path == "")
                return "";    //文件路径为空
            List<string> Result = new List<string>();

            Spire.Doc.Document doc = new Spire.Doc.Document();
            doc.LoadFromFile(Path);    //打开文件
            Path.Replace(".doc", "docx");    //替换后缀
            doc.SaveToFile(Path, FileFormat.Docx);    //保存为.doc
            return Path;
        }

主函数中调用如下:(若不是.doc则无需转换以节约开销)

if (Path.Contains(".doc"))
{
    string newPath = ChangeToDocx(Path);
    result = GetDoc(newPath);
}
result = GetDoc(Path);

到此这篇关于C#读取word中表格数据的方法实现的文章就介绍到这了,更多相关C#读取word数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#实现读取txt文件生成Word文档

    目录 dll文件安装(3种方法) 读取txt生成Word 注意事项 总结 本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 Free Spire.Doc for .NET .txt文档 dll文件安装(3种方法) 1.通过NuGet安装dll(2种方法) 1.1 可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“

  • asp.net(c#)下读取word文档的方法小结

    第一种方法: 复制代码 代码如下: Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "Application/msword"; string s=Server.MapPath("C#语言参考.doc"); Response.WriteFile("C#语言参考.doc"); Response.Write(s); Response.Flush(); Re

  • C#添加、读取Word脚注尾注的方法

    本文实例为大家分享了C#添加读取Word脚注尾注的具体代码,供大家参考,具体内容如下 脚注和尾注是对文本的补充说明.脚注一般位于页面的底部,可以作为文档某处内容的注释:尾注一般位于文档的末尾,列出引文 的出处等.在本示例中将介绍如何来添加或删除Word脚注. 工具使用: Free Spire. Doc for .NET(免费版) 第一步:dll引用 第二步:添加Word脚注.尾注 [C#] using Spire.Doc; using Spire.Doc.Documents; using Spi

  • C#读取word中表格数据的方法实现

    前些日子有一个项目需要从word文件中取表格数据并进行处理,网上大部分方案都是基于office的com组件实现,但是这样有一个缺点,如果电脑里没有安装office将无法使用,因为之前操作excel都是使用的NPOI,所以理所当然的想用NPOI解决此问题. 于是找到了如下代码 private List<string> GetDoc(string Path) { if (Path == "") return null; //文件路径为空 List<string> R

  • Python实现批量读取word中表格信息的方法

    本文实例讲述了Python实现批量读取word中表格信息的方法.分享给大家供大家参考.具体如下: 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import win32com from win32com.client import Dispatch, constants from docx import Document def parse_doc(f):

  • python读取word 中指定位置的表格及表格数据

    1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specText): document = Document(filename) paragraphs = document.paragraphs allTables = document.tables specText = specText.encode('utf-8').decode('utf-8') f

  • Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private void parseJsonMulti(String strResult) { try { Log.v("strResult11","strResult11="+strResult); int index=strResult.indexOf("[");

  • Python基于csv模块实现读取与写入csv数据的方法

    本文实例讲述了Python基于csv模块实现读取与写入csv数据的方法.分享给大家供大家参考,具体如下: 通过csv模块可以轻松读取格式为csv的文件,而且csv模块是python内置的,不需要下载就可以直接用. 一.准备csv文件 文件名是 e:\t.csv,文件内容: org_id,org_name,state,emp_id 1,销售1,'1',123 2,销售2,'0',321 3,销售3,'1',231 1,,'1',1234 二.读取csv数据 代码非常简单: # -*- coding

  • 使用 Python 读取电子表格中的数据实例详解

    Python 是最流行.功能最强大的编程语言之一.由于它是自由开源的,因此每个人都可以使用.大多数 Fedora 系统都已安装了该语言.Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数据.CSV文件一开始往往是以表格或电子表格的形式出现.本文介绍了如何在 Python 3 中处理 CSV 数据. CSV 数据正如其名.CSV 文件按行放置数据,数值之间用逗号分隔.每行由相同的字段定义.简短的 CSV 文件通常易于阅读和理解.但是较长的数据文件或具有更多字段的数据文件可能很难用肉眼

  • smarty模板引擎从php中获取数据的方法

    本文实例讲述了smarty模板引擎从php中获取数据的方法.分享给大家供大家参考.具体如下: smarty可以分配($smarty->assign)的变量类型:所有php支持的数据类型--基本数据类型.复合数据类型.特殊数据类型(具体见smarty相关手册). 操作/显示文件:index.php 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smart

  • Android通过json向MySQL中读写数据的方法详解【写入篇】

    本文实例讲述了Android通过json向MySQL中写入数据的方法.分享给大家供大家参考,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下 public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String j

  • Bootstrap table表格初始化表格数据的方法

    一.项目说明 ①此项目是ASP.NET项目,开发语言是C# ②bootstrap-table使用需要下载对应的css和js插件 ③具体详情还需查看api文档 二.前端代码 <div class="table-responsive"> <table id="table" class="text-nowrap"> </table> </div> [说明] ①text-nowrap设置表格超出不换行而显示

  • Python使用pymysql从MySQL数据库中读出数据的方法

    python3.x已经不支持mysqldb了,支持的是pymysql 使用pandas读取MySQL数据时,使用sqlalchemy,出现No module named 'MySQLdb'错误. 安装:打开Windows PowerShell,输入pip3 install PyMySQL即可 import pymysql.cursors import pymysql import pandas as pd #连接配置信息 config = { 'host':'127.0.0.1', 'port'

随机推荐