第一种:通过表下标获取
/// <summary>
/// 获取excel列名(列名为空也会返回一个空列名)
/// </summary>
/// <param name="path">路径</param>
/// <param name="sheetIndex">表下标</param>
/// <param name="fieldRowIndex">从第几行开始</param>
/// <returns></returns>
public static List<string> GetCNames(string path, int sheetIndex = 0, int fieldRowIndex = 0)
{
//列名
List<string> cNames = new List<string>();
try
{
//获取文件流
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
IWorkbook workbook;
//获取excel的文件类型
ExcelType type = GetExcelFileType(path).Value;
//通过不同的文件类型创建不同的读取接口(xls使用HSSFWorkbook类实现,xlsx使用XSSFWorkbook类实现)
switch (type)
{
case ExcelType.xlsx:
workbook = new XSSFWorkbook(stream);
break;
default:
workbook = new HSSFWorkbook(stream);
break;
}
//
ISheet sheet = null;
//获取工作表,默认获取第一张
if (workbook.NumberOfSheets > sheetIndex && workbook.NumberOfSheets > 0)
{
//获取excel表格
sheet = workbook.GetSheetAt(sheetIndex);
}
else
{
System.Windows.Forms.MessageBox.Show("索引超出界限或该文件表格为空!");
}
//是否已经获取工作表,如果没有则直接返回
if (sheet == null)
{
return null;
}
#region//获取表头,文本类型
//获取列名(默认获取第一行)
if (fieldRowIndex > sheet.LastRowNum)//判断行标是否超界
{
return null;
}
IRow headRow = sheet.GetRow(fieldRowIndex);
//列数
int cellcount = headRow.LastCellNum;
for (int i = 0; i < cellcount; i++)
{
//获取行中的i个元素
ICell cell = headRow.GetCell(i);
//将列名添加至数组
cNames.Add(cell.ToString());
}
#endregion
}
return cNames;
}
catch
{
return null;
}
}
第二种:通过表名获取
/// <summary>
/// 获取excel列名
/// </summary>
/// <param name="path">路径</param>
/// <param name="sheetName">表名</param>
/// <param name="fieldRowIndex">从第几行开始</param>
/// <returns></returns>
public static List<string> GetCNames(string path, string sheetName, int fieldRowIndex = 0)
{
//列名
List<string> cNames = new List<string>();
try
{
//获取文件流
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
IWorkbook workbook;
//获取excel的文件类型
ExcelType type = GetExcelFileType(path).Value;
//通过不同的文件类型创建不同的读取接口(xls使用HSSFWorkbook类实现,xlsx使用XSSFWorkbook类实现)
switch (type)
{
case ExcelType.xlsx:
workbook = new XSSFWorkbook(stream);
break;
default:
workbook = new HSSFWorkbook(stream);
break;
}
//
ISheet sheet = null;
//获取工作表
if (string.IsNullOrWhiteSpace(sheetName))
{
//sheet = workbook.GetSheetAt(0);
System.Windows.Forms.MessageBox.Show(sheetName + "表不存在!");
}
else
{
//获取excel表格
sheet = workbook.GetSheet(sheetName);
}
//是否已经获取工作表,如果没有则直接返回
if (sheet == null)
{
return null;
}
#region//获取表头,文本类型
//获取列名所在行(默认获取第一行)
if (fieldRowIndex > sheet.LastRowNum)//判断行标是否超界
{
return null;
}
IRow headRow = sheet.GetRow(fieldRowIndex);
//列数
int cellcount = headRow.LastCellNum;
for (int i = 0; i < cellcount; i++)
{
//获取行中的i个元素
ICell cell = headRow.GetCell(i);
cNames.Add(cell.ToString());
}
#endregion
}
return cNames;
}
catch
{
return null;
}
}