下面详细讲解“C#使用NPOI导入Excel的方法详解”的完整攻略。
安装NPOI
要使用NPOI,需要先安装它。可以通过NuGet包管理器搜索和安装NPOI。
导入Excel的方法
- 首先,需要先读取Excel文件。可以使用NPOI中的
HSSFWorkbook
或XSSFWorkbook
类来打开Excel文件。
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
// 读取Excel文件
var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));
- 接下来,需要获取要导入的工作表。可以通过
GetSheet()
方法来获取工作表,其中参数为工作表的名称或索引。
// 获取工作表
var hssfSheet = hssfworkbook.GetSheet("Sheet1");
var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表
- 获取工作表中的行和单元格。可以通过
GetRow()
方法来获取行,需要指定行号;可以通过GetCell()
方法来获取单元格,需要指定单元格所在的行和列。
// 获取行和单元格
var hssfRow = hssfSheet.GetRow(0);
var xssfRow = xssfSheet.GetRow(0);
var hssfCell = hssfRow.GetCell(0);
var xssfCell = xssfRow.GetCell(0);
- 获取单元格中的数据。可以通过
CellType
属性获取数据类型,然后根据数据类型调用相应的方法来获取数据。如:GetNumericCellValue()
方法获取数字类型数据,GetStringCellValue()
方法获取字符串类型数据等。
// 获取单元格中的数据
var hssfCellValue = (hssfCell.CellType == CellType.Numeric) ? hssfCell.NumericCellValue.ToString() : hssfCell.StringCellValue;
var xssfCellValue = (xssfCell.CellType == CellType.Numeric) ? xssfCell.NumericCellValue.ToString() : xssfCell.StringCellValue;
- 遍历整个工作表,获取所有数据。可以先通过
GetRowEnumerator()
方法获取所有行的枚举器,然后遍历每一行,再遍历每一列,获取单元格中的数据。
// 获取所有数据
var hssfEnumerator = hssfSheet.GetRowEnumerator();
while (hssfEnumerator.MoveNext())
{
var row = (HSSFRow)hssfEnumerator.Current;
for (var i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
Console.WriteLine(cellValue);
}
}
以上就是使用NPOI导入Excel的方法详解,下面附上两条示例。
示例1
下面是一个简单的示例,演示如何读取Excel文件中的所有数据并展示在控制台上。
using System;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
namespace ExcelImport
{
class Program
{
static void Main(string[] args)
{
// 读取Excel文件
var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));
// 获取工作表
var hssfSheet = hssfworkbook.GetSheet("Sheet1");
var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表
// 获取所有数据
var hssfEnumerator = hssfSheet.GetRowEnumerator();
while (hssfEnumerator.MoveNext())
{
var row = (HSSFRow)hssfEnumerator.Current;
for (var i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
Console.WriteLine(cellValue);
}
}
var xssfEnumerator = xssfSheet.GetRowEnumerator();
while (xssfEnumerator.MoveNext())
{
var row = (XSSFRow)xssfEnumerator.Current;
for (var i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
Console.WriteLine(cellValue);
}
}
}
}
}
示例2
下面是另一个示例,演示如何读取Excel文件中指定列的数据并保存到数组中。
using System;
using System.Collections.Generic;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
namespace ExcelImport
{
class Program
{
static void Main(string[] args)
{
// 读取Excel文件
var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));
// 获取工作表
var hssfSheet = hssfworkbook.GetSheet("Sheet1");
var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表
// 获取指定列的数据
var hssfList = new List<string>();
var xssfList = new List<string>();
var hssfEnumerator = hssfSheet.GetRowEnumerator();
while (hssfEnumerator.MoveNext())
{
var row = (HSSFRow)hssfEnumerator.Current;
var cell = row.GetCell(0);
var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
hssfList.Add(cellValue);
}
var xssfEnumerator = xssfSheet.GetRowEnumerator();
while (xssfEnumerator.MoveNext())
{
var row = (XSSFRow)xssfEnumerator.Current;
var cell = row.GetCell(0);
var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
xssfList.Add(cellValue);
}
// 输出结果
Console.WriteLine("HSSF:");
foreach (var item in hssfList)
{
Console.WriteLine(item);
}
Console.WriteLine("XSSF:");
foreach (var item in xssfList)
{
Console.WriteLine(item);
}
}
}
}
以上就是示例说明,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用NPOI导入Excel的方法详解 - Python技术站