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