【C#】使用ClosedXML,讀取Excel xlsx表格

使用說明

  • 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);
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章