开发者社区> eiceblue> 正文

C# 在excel表格中检索并导出数据

简介: 由于工作需要,我经常使用excel文档来存储和处理各种数据,在生活中偶尔也会使用excel表格来记录各种开销,相信很多朋友也和我一样。Excel的功能很强大,其中一个很实用的数据处理功能就是查找和替换,它让我们可以很方便的找到表格中的数据。
+关注继续查看

由于工作需要,我经常使用excel文档来存储和处理各种数据,在生活中偶尔也会使用excel表格来记录各种开销,相信很多朋友也和我一样。Excel的功能很强大,其中一个很实用的数据处理功能就是查找和替换,它让我们可以很方便的找到表格中的数据。但我发现excel并不能直接将这些查找到的数据导出。设想我有一个excel文档,里面存放了学校的老师、学生和工人的一些信息,我想将这个文档中所有老师的信息全部检索出来,并提取到一个新的excel文档里面,如何实现?如果文件不大的话,可以逐行copy,可如果文件很大,这个方法就不行了,费时费力。经过一番研究,于是有了这篇文章。下面就来看看怎样使用C#编程的方法,将一个excel工作表中的数据检索并提取到一个新的excel文档里。

在这里我使用了一个免费的Excel API-Spire.XLS. 有需要的朋友可以下载使用。 

这是原excel文件截图:

                       

 

详细步骤和代码片段如下:

安装Spire.XLS后,新建一个项目,并添加Bin文件夹下的dll文件作为项目的引用。这里要注意选择和你项目的.NET Framework版本一致的dll文件(如您项目的.NET Framework版本是4.0,则选择.NET 4.0文件夹下的dll文件 )。

步骤1:新建一个workbook对象并获取第一个worksheet。

Workbook newBook = new Workbook();
Worksheet newSheet = newBook.Worksheets[0];

 

步骤2:新建一个workbook对象并加载excel文件。

Workbook workbook = new Workbook();
workbook.LoadFromFile("信息.xlsx");

 

步骤3:获取你想要检索并从中提取数据的worksheet。在此示例中是第一个worksheet。

Worksheet sheet = workbook.Worksheets[0];

 

步骤4:检索数据并导出至步骤1新建的excel文档的worksheet里。

int i = 1;
int columnCount = sheet.Columns.Count();
foreach (CellRange range in sheet.Columns[0])
{
    if (range.Text == "老师")
        {
            CellRange sourceRange = sheet.Range[range.Row, 1, range.Row, columnCount];
            CellRange destRange = newSheet.Range[i, 1, i, columnCount];
            sheet.Copy(sourceRange, destRange, true);
            i++;
        }
}

 

步骤5:保存文件。

newBook.SaveToFile("信息-老师.xlsx", ExcelVersion.Version2010);

 

效果图:

 

 

全部代码:

using System.Linq;
using Spire.Xls;

namespace Retrieve_and_extract_data
{
    class Program
    {
        static void Main(string[] args)
        {
            Workbook newBook = new Workbook();
            Worksheet newSheet = newBook.Worksheets[0];
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("信息.xlsx");
            Worksheet sheet = workbook.Worksheets[0];
            int i = 1;
            int columnCount = sheet.Columns.Count();
            foreach (CellRange range in sheet.Columns[0])
            {
                if (range.Text == "老师")
                {
                    CellRange sourceRange = sheet.Range[range.Row, 1, range.Row, columnCount];
                    CellRange destRange = newSheet.Range[i, 1, i, columnCount];
                    sheet.Copy(sourceRange, destRange, true);
                    i++;
                }
            }
            newBook.SaveToFile("信息-老师.xlsx", ExcelVersion.Version2010);
        }
    }
}

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用Navicat导出数据库表中特定的数据
使用Navicat导出数据库表中特定的数据 以导出字典表数据为例 在自己开发库添加好的字典,每次交版还需要再客户的环境上再操作一遍,自己手动添加或修改费事费力 ,还容易出错
14 0
3dsmax批量导入、导出文件
3dsmax中maxscript脚本批量导入导出obj,stl,fbx文件
268 0
Navicat筛选出所需数据并导成SQL脚本文件
Navicat筛选出所需数据并导成SQL脚本文件
410 0
Python数据处理 | 批量提取文件夹下的csv文件,每个csv文件根据列索引提取特定几列,并将提取后的数据保存到新建的一个文件夹
会 Python 的基础文件操作、Pandas的读取数据、索引指定列的数据、保存数据就能解决(几分钟的事儿)
414 0
ArcGIS的批量操作值提取至点并批量导出到excel数据操作
ArcGIS的批量操作值提取至点并批量导出到excel数据操作
558 0
将mysql数据库表结构导出excel文档
将mysql数据库表结构导出excel文档
93 0
mysql数据库导出表结构到excel表中
在进行数据比对、分析时,直接通过数据库查看是不可取的,而且不可能在每个电脑上都装数据库查看工具,这时就需要把数据库以其他形式提取出来。
516 0
如何从Excel表格导入数据批量生成二维码
目前二维码应用渐趋广泛,二维码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。那么我们怎么用条码打印软件从现有Excel表格中导入数据批量生成我们所需要的二维码呢? 首先我们打开条码打印软件,点击“新建”...
1809 0
将execel表格的数据导入到mysql数据库
在开发中经常会将现成的execel表格导入到数据库里,否则一个个字段插入填写,太浪费时间,效率很低。本文主要是讲如果将execel表格导入到mysql数据库,希望对各位有所帮助。
1109 0
+关注
eiceblue
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
大批量处理excel文件到ODPS中方案
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载