直接在控制台程序输出,注意该程序需要添加Nuget包[ClosedXML]:
一、获取指定的行列
using System;
using System.Collections.Generic;
using ClosedXML.Excel;
class Program
{
static void Main(string[] args)//需要先安装Nuget包:ClosedXML.Excel
{
// Excel 文件路径
string filePath = @"F:\C_program\test2\files\工作表.xlsx";
// 工作表名称
string sheetName = "Sheet1";
// 获取第2行的数据
List<string> rowList = ReadExcelWithClosedXML(filePath, sheetName, "Row", 2).Where(x => !string.IsNullOrEmpty(x)).ToList();
// 获取B列的数据
List<string> columnList = ReadExcelWithClosedXML(filePath, sheetName, "Column", 2).Where(x => !string.IsNullOrEmpty(x)).ToList();
}
static List<string> ReadExcelWithClosedXML(string filePath, string sheetName, string type = null, int num = 0)
{
// 存储 Excel 数据的列表
List<string> dataList = new List<string>();
// 创建 XLWorkbook 对象,打开 Excel 文件
using (var workbook = new XLWorkbook(filePath))
{
// 获取指定名称的工作表
var worksheet = workbook.Worksheet(sheetName);
// 获取工作表中使用的范围
IXLRange usedRange = worksheet.RangeUsed();
if (!string.IsNullOrEmpty(type))
{
if (type == "Row")
{
var row = worksheet.Row(num);
usedRange = worksheet.Range(row.FirstCell(), row.LastCell());
}
else if (type == "Column")
{
string columnName = GetExcelColumnName(num);
var column = worksheet.Column(columnName);
usedRange = worksheet.Range(column.FirstCell(), column.LastCell());
}
}
// 读取每个单元格的值,并添加到 dataList 中
foreach (var cell in usedRange.Cells())
{
dataList.Add(cell.Value.ToString());
}
}
return dataList;
}
// 辅助方法:将列索引转换为 Excel 列名
static string GetExcelColumnName(int columnNumber)
{
int dividend = columnNumber;
string columnName = string.Empty;
while (dividend > 0)
{
int modulo = (dividend - 1) % 26;
columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
dividend = (dividend - modulo) / 26;
}
return columnName;
}
}
二、获取整个数据表格,存入dataset
using ClosedXML.Excel;
using System.Data;
namespace 诊所分析控制台程序
{
public class Program
{
static void Main(string[] args)
{
// Excel 文件路径
string filePath = @"C:\Usersdata.xlsx";
// 工作表名称
string sheetName = "sheet2";
//获取上面这个xlsx的表格数据,存入Dataset
DataSet list = GetDataSet(filePath, sheetName);
}
private static DataSet GetDataSet(string filePath, string sheetName)
{
// 创建一个 DataSet
DataSet dataSet = new DataSet();
// 使用 ClosedXML 打开 Excel 文件
using (var workbook = new XLWorkbook(filePath))
{
// 获取指定名称的工作表
var worksheet = workbook.Worksheet(sheetName);
// 将工作表的数据加载到 DataTable
DataTable dataTable = new DataTable(sheetName);
// 添加列
foreach (var cell in worksheet.Row(1).Cells())
{
dataTable.Columns.Add(cell.Value.ToString());
}
// 获取工作表中的所有行
var rows = worksheet.RowsUsed().ToList();
// 添加行
foreach (var row in rows.Skip(1)) // 从第二行开始(跳过标题行)
{
var dataRow = dataTable.NewRow();
var cellCount = row.Cells().Count(); // 确保调用了 Count 方法
for (int col = 1; col <= cellCount; col++)
{
dataRow[col - 1] = row.Cell(col).Value.ToString();
}
dataTable.Rows.Add(dataRow);
}
// 将 DataTable 添加到 DataSet
dataSet.Tables.Add(dataTable);
}
//var row1 = dataSet.Tables[0].Rows[0].ItemArray.ToList() ;//获取第一行
return dataSet;
}
}
}