C#连接Excel驱动与示例代码分享


在C#中连接Excel文件(无论是`.xls`还是`.xlsx`格式),通常不会直接使用数据库驱动的方式,而是会使用第三方库如EPPlus(用于处理`.xlsx`)或NPOI(支持`.xls`和`.xlsx`)。这里我将提供一个使用NPOI库来读取Excel文件的示例代码。

首先,你需要在你的项目中安装NPOI库。如果你使用的是NuGet包管理器,可以通过以下命令安装:


Install-Package NPOI

接下来是一个使用NPOI读取Excel文件的示例C#代码:


using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // 用于.xlsx格式
// 如果需要处理.xls格式,则还需要引用NPOI.HSSF.UserModel;

class Program
{
    static void Main(string[] args)
    {
        // Excel文件路径
        string filePath = @"C:\path\to\your\excel\file.xlsx";

        // 使用FileStream打开文件
        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            // 创建一个Workbook实例,根据文件类型选择相应的实现
            IWorkbook workbook;
            if (filePath.EndsWith(".xlsx"))
            {
                workbook = new XSSFWorkbook(file); // 用于处理.xlsx格式
            }
            // 如果需要处理.xls格式,则使用下面的代码
            // else if (filePath.EndsWith(".xls"))
            // {
            //     workbook = new HSSFWorkbook(file); // 用于处理.xls格式
            // }

            // 获取第一个Sheet
            ISheet sheet = workbook.GetSheetAt(0);

            // 遍历行和列
            for (int row = 0; row <= sheet.LastRowNum; row++)
            {
                if (sheet.GetRow(row) != null) // null是可能的,如果没有数据
                {
                    for (int col = 0; col < sheet.GetRow(row).LastCellNum; col++)
                    {
                        if (sheet.GetRow(row).GetCell(col) != null) // 同样检查null
                        {
                            // 根据类型读取单元格数据
                            Cell cell = sheet.GetRow(row).GetCell(col);
                            if (cell.CellType == CellType.String)
                            {
                                Console.Write(cell.StringCellValue + "\t");
                            }
                            else if (cell.CellType == CellType.Numeric)
                            {
                                Console.Write(cell.NumericCellValue + "\t");
                            }
                            // 可以继续添加其他类型的处理
                        }
                    }
                    Console.WriteLine(); // 换行
                }
            }
        }
    }
}

注意:

1. 示例中只处理了字符串和数字类型的单元格,你可能需要根据实际需求添加对其他类型(如日期、布尔值等)的处理。

2. 在处理`.xls`文件时,需要相应地更改`IWorkbook`的创建方式,并使用`HSSFWorkbook`代替`XSSFWorkbook`。

3. 确保在项目中正确安装了NPOI库,并正确引用了相应的命名空间。