由于工作需要,我經常使用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);
}
}
}