我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候,

这时我迫切地需要将word表格中的数据导入到Excel中。相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能。这里,我使用了两个免费API,

DocX和Spire.Xls。

有需要的朋友可以下载使用。下载地址:

DocX:codeplex官网

Spire.Xls: E-iceblue官网

注意:在创建项目后,需要添加这两个控件的相关.dll文件作为项目的引用。

以下是详细步骤:

首先我使用DocX API 来获取word表格中的数据,然后将数据导入System.Data.DataTable对象中

代码片段:

步骤1:加载word文档;

DocX document = DocX.Load("E:\\Program Files\\data.docx");

步骤2从文档中获取表格。作为示例,这里我仅获取了第一个表格;

//获取文档的第一个表格

Table table = document.Tables[];

步骤3创建一个DataTable对象,并导入word表格中的数据;

//创建一个Datable对象并命名为order

DataTable dt = new DataTable("order");

//将word表格中的数据导入Datable

DataColumn column;

for (int i = ; i < table.ColumnCount; i++)

{

column = new DataColumn();

column.ColumnName = table.Rows[].Cells[i].Paragraphs[].Text;

dt.Columns.Add(column);

}

DataRow newRow;

for (int i = ; i < table.RowCount; i++)

{

newRow = dt.NewRow();

Row row = table.Rows[i];

for (int j = ; j < table.ColumnCount; j++)

{

newRow[j] = row.Cells[j].Paragraphs[].Text;

}

dt.Rows.Add(newRow);

}

效果图如下:

原word文档:

Datable:

其次,我使用了Spire.Xls API来创建一个Workbook对象,并将dataTable插入到Workbook中,然后将文件保存为.xlsx文件。

代码片段:

步骤1创建一个Workbook实例并新建一个空的worksheet;

//创建一个Workbook示例

Workbook workbook = new Workbook();

//新建一个空的worksheet

workbook.CreateEmptySheets();

//获取第一个worksheet

Worksheet sheet = workbook.Worksheets[];

步骤2将dataTable中的数据导入到worksheet;

//将dataTable中的数据插入到worksheet中,1代表第一行和第一列

sheet.InsertDataTable(dt, true, , );

步骤3 保存到一个excel文件中;

workbook.SaveToFile("Data.xlsx",ExcelVersion.Version2007);

生成的excel文件效果图:

全部代码:

using System.Data;

using Spire.Xls;

using Novacode; //Docx

namespace word_table_to_excel

{

    class Program

    {

        static void Main(string[] args)

        {

            DocX document = DocX.Load("E:\\Program Files\\data.docx");

            Table table = document.Tables[];

            DataTable dt = new DataTable("order");

            DataColumn column;

            for (int i = ; i < table.ColumnCount; i++)

            {

                column = new DataColumn();

                column.ColumnName = table.Rows[].Cells[i].Paragraphs[].Text;

                dt.Columns.Add(column);

            }

            DataRow newRow;

            for (int i = ; i < table.RowCount; i++)

            {

                newRow = dt.NewRow();

                Row row = table.Rows[i];

                for (int j = ; j < table.ColumnCount; j++)

                {

                    newRow[j] = row.Cells[j].Paragraphs[].Text;

                }

                dt.Rows.Add(newRow);

            }

            Workbook workbook = new Workbook();

            workbook.CreateEmptySheets();

            Worksheet sheet = workbook.Worksheets[];

            sheet.InsertDataTable(dt, true, , );

            workbook.SaveToFile("Data.xlsx", ExcelVersion.Version2007);

        }

    }

}

总结:

这是两款独立的免费软件,使用时不需要安装MS Office。使我节省了不少的时间。如果你有好的意见或建议,希望可以在这里相互分享。

希望本文能给您带来一定的帮助。

如何使用免费控件将Word表格中的数据导入到Excel中的更多相关文章

  1. 将页面中指定表格的数据导入到Excel中

    function AutoExcel(){   var oXL = new ActiveXObject("Excel.Application"); //创建应该对象   var o ...

  2. Visual Basic 2012 借助DataGridView控件将SQL server2012 数据导入到Excel 2010

    摘  要: SQL Server 2012 数据和Excel 2010之间的连接和数据的传输,本篇文章主要针对的是SQL Server 2012 数据导入到Excel 2010文件中.Excel软件对 ...

  3. Web打印控件Lodop实现表格物流单的打印

    Web打印控件Lodop实现表格物流单的打印 一.lodop打印预览效果图 LODOP.PRINT_SETUP();打印维护效果图 LODOP.PREVIEW();打印预览图 二.写在前面 最近项目用 ...

  4. [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. webbrowser控件显示word文档

    参照某网站上的步骤(http://www.kuqin.com/office/20070909/968.html)首先,在Visual Studio中创建一个C#语言的Windows应用程序,然后在左侧 ...

  6. WPF 免费控件库

    https://github.com/Infragistics/InfragisticsThemesForMicrosoftControls 几款WPF免费控件库,不过运行源码时需要下载三个DLL , ...

  7. 【2019V2全新发布】ComponentOne .NET开发控件集,新增.NET Core数据引擎

    ComponentOne .NET开发控件集 2019V2正式发布,除持续完善并加入全新的.NET开发控件外,还针对产品架构稳定性.易用性.与.NET Core平台深度集成.已有控件功能增强等多个方面 ...

  8. 报表控件NCReport教程:集成NCReport到Qt应用程序中

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...

  9. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

随机推荐

  1. 信号量sem

    一.什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域.临界区域是指执行数据更 ...

  2. java-String Date Calendar之间的转换

    1.Calendar 转化 String Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDa ...

  3. pythonchallenge 解谜 Level 7

    #-*- coding:utf-8 -*- #代码版本均为python 3.5.1 #Level 7 from PIL import Image x_begin, x_end = 0, 609 y_b ...

  4. Shell下突破安全狗远程桌面守护

    首先在Shell下把安全狗的安装配置给下来 默认安装路径: C:\Program Files\SafedogServer\SafeDogGuardCenter  找到 ProGuardData.ini ...

  5. 浅析PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里跟大家讨论下for和foreach两种方法.用这两种方法执行遍历的场景太多太多了,这里我们只针对以下两个数组作为例子来讨论.所谓管中窥豹,多少能理清一点两者的区 ...

  6. 多线程相关------临界区CriticalSection

    多线程一直是短板,整理相关知识方便查询 临界区(Critical Section) 临界区是一段供线程独占式访问的代码.在任意时刻,若有一个线程正在访问该代码段,如果其他所有试图访问的线程都将被挂起, ...

  7. 关于HTML是什么,能做什么

    HTML(Hyper Text Mark-up Language )即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出.设计 HTML 语言的目的是为了能把存放在一台电脑 ...

  8. 一个防止误删MSSQL数据库的方法

    一个防止误删MSSQL数据库的方法 环境:Windows2008 R2 .SQL 2012 今天发现一个有趣的现象,之前数据库服务器的其中几个数据库做过镜像,不过现在已经删除了,今天又要在那台服务器上 ...

  9. STOMP协议介绍

    STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息 ...

  10. 前端神器avalonJS入门(三)

    本章将介绍如何使用avalon来实现前端路由功能. 我们需要用到两个avalon路由配套模块—— mmHistory.js 和 mmRouter.js .其中mmHistory是用于历史管理,它会劫持 ...