C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#读取Excel

C#实现读取Excel文件并将数据写入数据库和DataTable

作者:Eiceblue

Excel文件是存储表格数据的普遍格式,因此能够高效地读取和提取信息对于我们来说至关重要,下面我们就来看看C#如何实现读取Excel文件并将数据写入数据库和DataTable吧

Excel文件是存储表格数据的普遍格式,因此能够高效地读取和提取信息对于我们来说至关重要。C#语言借助.NET Framework和各种库的广泛功能,能够进行高效的数据操作。利用C#读取Excel文件并将数据写入数据库和DataTable,或者将数据用于其他目的,对于开发人员来说是一个处理Excel数据的优秀解决方案。

本文所使用的方法需要用到Excel文件处理库Spire.XLS for .NET,可从官网下载或在NuGet中搜索安装,也可在项目管理控制台输入:PM> Install-Package Spire.XLS安装。

使用C#读取Excel文件引导

为了有效地利用Spire.XLS for .NET读取Excel文件数据并写入其他位置,需要熟悉其中的一些类、属性和方法。下表总结了一些主要的类、属性和方法以及它们的功能和描述:

项目描述
Workbook代表Excel工作簿并提供读取和操作其内容的方法
Worksheet代表工作簿中的单个工作表
Workbook.LoadFromFile 方法从文件加载Excel工作簿
Workbook.Worksheets 属性获取工作簿中的工作表集合
Worksheet.Range[] 属性获取工作表中的单元格范围(索引从1开始)
CellRange.Value 属性获取或设置单元格的值
CellRange.Text 属性获取或设置单元格的显示文本

读取Excel文件的典型工作流程包括以下步骤:

C#代码读取Excel文件数据并写入文本

使用C#读取Excel文件并将数据写入文本文件的步骤如下:

代码示例:

using Spire.Xls;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 加载Excel文件
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("Sample.xlsx");

        // 获取第一个工作表
        Worksheet worksheet = workbook.Worksheets[0];

        // 创建输出文本文件
        string outputFile = "Output.txt";
        StreamWriter writer = new StreamWriter(outputFile);

        // 遍历工作表的行和列,并将数据写入文本文件
        for (int row = 1; row <= worksheet.LastRow; row++)
        {
            for (int col = 1; col <= worksheet.LastColumn; col++)
            {
                CellRange range = worksheet.Range[row, col];
                string cellValue = range.Text == null ? string.Empty : range.Text.ToString();
                writer.Write(cellValue + "\t"); // 使用制表符作为单元格数据的分隔符
            }
            writer.WriteLine(); // 写入换行符
        }

        // 关闭写入器并保存文本文件
        writer.Close();

        // 释放资源
        workbook.Dispose();
    }
}

读取结果:

使用C#代码将Excel文件读取到DataTable对象中

DataTable是.NET Framework中表示数据表的对象。它用于在内存中存储和操作数据,并可以执行排序、筛选、修改和导出等操作。使用C#读取Excel文件数据并将其写入DataTable对象,可以方便进一步处理数据。以下是具体步骤:

代码示例:

using Spire.Xls;
using System.Data;

namespace ExcelToAccess
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建Workbook类的对象
            Workbook workbook = new Workbook();

            // 加载Excel文件
            workbook.LoadFromFile("Sample.xlsx");

            // 获取第一个工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 将工作表中的数据导出到一个DataTable对象
            DataTable dataTable = worksheet.ExportDataTable();

            workbook.Dispose();
        }
    }
}

C#代码读取Excel文件并插入到数据库中

这个示例展示了如何使用C#代码将Excel工作表数据写入Access数据库。这种方法还需要使用System.Data.OleDb命名空间。如果你使用的.NET Framework没有它,你可以通过在Package Management Console中输入以下代码来安装它:Install-Package System.Data.OleDb。

读取Excel文件并插入到数据库的步骤如下:

代码示例:

using Spire.Xls;
using System.Data.OleDb;

class Program
{
    static void Main(string[] args)
    {
        // 设置Excel文件路径
        string excelFilePath = "Sample.xlsx";
        // 设置Access数据库文件路径
        string accessDbFilePath = "Sample.accdb";

        // 加载Excel文件
        Workbook workbook = new Workbook();
        workbook.LoadFromFile(excelFilePath);

        // 获取第一个工作表
        Worksheet worksheet = workbook.Worksheets[0];

        // 使用工作表名称作为表名
        string tableName = worksheet.Name;

        // 获取第一行作为列名
        CellRange headerRange = worksheet.Rows[0];
        string[] columnNames = new string[headerRange.Columns.Length];
        for (int i = 0; i < headerRange.Columns.Length; i++)
        {
            columnNames[i] = headerRange.Columns[i].Value.Replace(" ", "_");
        }

        // 连接到Access数据库
        string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessDbFilePath};Persist Security Info=False;";
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            connection.Open();

            // 创建表
            string createTableQuery = $"CREATE TABLE [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}] Memo"))})";
            using (OleDbCommand createTableCommand = new OleDbCommand(createTableQuery, connection))
            {
                createTableCommand.ExecuteNonQuery();
            }

            // 插入数据
            string insertQuery = $"INSERT INTO [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}]"))}) VALUES ({string.Join(", ", columnNames.Select(c => $"@{c}"))})";
            using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection))
            {
                foreach (CellRange row in worksheet.Rows.Cast().Skip(1))
                {
                    for (int i = 0; i < row.Columns.Length; i++)
                    {
                        insertCommand.Parameters.AddWithValue($"@{columnNames[i]}", row.Columns[i].Value);
                    }

                    insertCommand.ExecuteNonQuery();
                    insertCommand.Parameters.Clear();
                }
            }

            connection.Close();
            workbook.Dispose();
        }
    }
}

读取写入结果:

本文中介绍了如何使用 C# 来读取 Excel 文件并提取数据用于各种用途。通过利用 Spire.XLS for .NET 的强大功能,开发人员可以高效地处理 Excel 数据、将其导出为不同格式并增强数据驱动型应用程序。

以上就是C#实现读取Excel文件并将数据写入数据库和DataTable的详细内容,更多关于C#读取Excel的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文