使用說明
- github: https://github.com/ClosedXML/ClosedXML
API
- new XLWorkbook(fileUrl); //讀取xlsx並獲取實例
- XLWorksheet.FirstRow(); //獲得第一行
- Cell(i) //取篩選結果的第i個格子, 如果獲取的是列,拿到的就是第i行,如果是行實例拿到的就是第i列
使用的命名空間
using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.Linq;
實例主體代碼
static void Main(string[] args)
{
const string fileUrl ="" ;
//讀取xlsx
var workbook = new XLWorkbook(fileUrl);
Console.WriteLine("表格獲取");
//注意,這個索引是在1開始的
for (int i = 1; i < workbook.Worksheets.Count+1; i++)
{
Console.WriteLine(workbook.Worksheet(i).Name);
}
Console.WriteLine("\n");
//跟查找數據
Console.WriteLine("拿到第一行的數據,遍歷到直到爲空");
IXLWorksheet XLWorksheet = workbook.Worksheet(1);
var row = XLWorksheet.FirstRow();
for (int i = 1; i < (row.CellCount() + 1); i++)
{
//獲得單元格
var cell =row.Cell(i);
//如果單元格爲空就返回
if (cell.IsEmpty())
{
break;
}
Console.WriteLine(cell.GetString());
}
//假設第一行是數據的字段名,現在根據字段名查找一列數據
List<string> values = new List<string>();
//配置表裏有一個ItemId字段
string fieldName = "ItemId";
IXLCell rowCell=null;
for (int i = 1; i < (row.CellCount() + 1); i++)
{
//獲得單元格
var cell = row.Cell(i);
if (!cell.IsEmpty()&& cell.GetString()== fieldName)
{
rowCell = cell;
break;
}
}
if (rowCell==null)
{
Console.WriteLine("找不到該字段:"+fieldName);
}
else
{
Console.WriteLine("\n");
Console.WriteLine(fieldName + " 字段的所有值:");
//獲得該列
var column= XLWorksheet.Column(rowCell.WorksheetColumn().ColumnNumber());
//Cells()
Console.WriteLine("數據個數:"+column.Cells().Count());
int index = 1;
while (!column.Cell(index).IsEmpty())
{
values.Add(column.Cell(index).GetString());
index++;
}
}
//輸出該字段的所有值
foreach (var item in values)
{
Console.WriteLine(item);
}
}