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。

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);
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM