打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 在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。

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

 

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

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

 

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

1
Worksheet sheet = workbook.Worksheets[0];

 

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

1
2
3
4
5
6
7
8
9
10
11
12
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:保存文件。

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

 

效果图:

 

 

全部代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
        }
    }
}

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C#中NPOI操作excel之读取和写入excel数据
悟空问答
VBA入门只需3天 一键合并多个sheet
C# 操作Excel文件之COM组件方式
Excel(XLS,XLSX)和CSV相互转换
第13章 Excel常用对象
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服