欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable

 更新時(shí)間:2024年03月25日 10:22:26   作者:Eiceblue  
Excel文件是存儲(chǔ)表格數(shù)據(jù)的普遍格式,因此能夠高效地讀取和提取信息對(duì)于我們來說至關(guān)重要,下面我們就來看看C#如何實(shí)現(xiàn)讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable吧

Excel文件是存儲(chǔ)表格數(shù)據(jù)的普遍格式,因此能夠高效地讀取和提取信息對(duì)于我們來說至關(guān)重要。C#語言借助.NET Framework和各種庫的廣泛功能,能夠進(jìn)行高效的數(shù)據(jù)操作。利用C#讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable,或者將數(shù)據(jù)用于其他目的,對(duì)于開發(fā)人員來說是一個(gè)處理Excel數(shù)據(jù)的優(yōu)秀解決方案。

本文所使用的方法需要用到Excel文件處理庫Spire.XLS for .NET,可從官網(wǎng)下載或在NuGet中搜索安裝,也可在項(xiàng)目管理控制臺(tái)輸入:PM> Install-Package Spire.XLS安裝。

使用C#讀取Excel文件引導(dǎo)

為了有效地利用Spire.XLS for .NET讀取Excel文件數(shù)據(jù)并寫入其他位置,需要熟悉其中的一些類、屬性和方法。下表總結(jié)了一些主要的類、屬性和方法以及它們的功能和描述:

項(xiàng)目描述
Workbook代表Excel工作簿并提供讀取和操作其內(nèi)容的方法
Worksheet代表工作簿中的單個(gè)工作表
Workbook.LoadFromFile 方法從文件加載Excel工作簿
Workbook.Worksheets 屬性獲取工作簿中的工作表集合
Worksheet.Range[] 屬性獲取工作表中的單元格范圍(索引從1開始)
CellRange.Value 屬性獲取或設(shè)置單元格的值
CellRange.Text 屬性獲取或設(shè)置單元格的顯示文本

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

  • 使用 Workbook.LoadFromFile() 方法加載Excel文件。
  • 通過 Workbook.Worksheets[] 屬性訪問工作表。
  • 通過 Worksheet.Range[] 屬性訪問單元格。
  • 通過 CellRange.Text 屬性訪問單元格中顯示的文本,或通過 CellRange.Value 屬性訪問單元格的值(文本、數(shù)字、公式等)。
  • 檢索數(shù)據(jù),將數(shù)據(jù)寫入文本文件、數(shù)據(jù)庫等,或執(zhí)行其他所需操作。
  • 可以直接使用 Worksheet.ExportDataTable() 方法將單元格值導(dǎo)出到數(shù)據(jù)表,并返回一個(gè)DataTable對(duì)象。
  • 還可以直接使用 Workbook.SaveToFile() 方法將工作簿轉(zhuǎn)換為任何支持的格式。

C#代碼讀取Excel文件數(shù)據(jù)并寫入文本

使用C#讀取Excel文件并將數(shù)據(jù)寫入文本文件的步驟如下:

  • 導(dǎo)入所需的命名空間。
  • 創(chuàng)建 Workbook 類的對(duì)象,并使用 Workbook.LoadFromFile() 方法加載Excel文件。
  • 通過 Workbook.Worksheets[] 屬性獲取第一個(gè)工作表。
  • 創(chuàng)建一個(gè)文本文件用于寫入工作表中的數(shù)據(jù)。
  • 遍歷分配的行和列,在 Worksheet.Range[] 屬性中訪問單元格,并通過 CellRange.Text 屬性獲取每個(gè)單元格的顯示文本,然后將其寫入文本文件中。
  • 釋放資源。

代碼示例:

using Spire.Xls;
using System.IO;

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

        // 獲取第一個(gè)工作表
        Worksheet worksheet = workbook.Worksheets[0];

        // 創(chuàng)建輸出文本文件
        string outputFile = "Output.txt";
        StreamWriter writer = new StreamWriter(outputFile);

        // 遍歷工作表的行和列,并將數(shù)據(jù)寫入文本文件
        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"); // 使用制表符作為單元格數(shù)據(jù)的分隔符
            }
            writer.WriteLine(); // 寫入換行符
        }

        // 關(guān)閉寫入器并保存文本文件
        writer.Close();

        // 釋放資源
        workbook.Dispose();
    }
}

讀取結(jié)果:

使用C#代碼將Excel文件讀取到DataTable對(duì)象中

DataTable是.NET Framework中表示數(shù)據(jù)表的對(duì)象。它用于在內(nèi)存中存儲(chǔ)和操作數(shù)據(jù),并可以執(zhí)行排序、篩選、修改和導(dǎo)出等操作。使用C#讀取Excel文件數(shù)據(jù)并將其寫入DataTable對(duì)象,可以方便進(jìn)一步處理數(shù)據(jù)。以下是具體步驟:

  • 導(dǎo)入所需的命名空間。
  • 創(chuàng)建 Workbook 類的對(duì)象,并使用 Workbook.LoadFromFile() 方法加載Excel文件。
  • 通過 Workbook.Worksheets[] 屬性獲取第一個(gè)工作表。
  • 使用 Worksheet.ExportDataTable() 方法將工作表中的數(shù)據(jù)導(dǎo)出到一個(gè) DataTable 對(duì)象中。
  • 釋放資源。

代碼示例:

using Spire.Xls;
using System.Data;

namespace ExcelToAccess
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建Workbook類的對(duì)象
            Workbook workbook = new Workbook();

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

            // 獲取第一個(gè)工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 將工作表中的數(shù)據(jù)導(dǎo)出到一個(gè)DataTable對(duì)象
            DataTable dataTable = worksheet.ExportDataTable();

            workbook.Dispose();
        }
    }
}

C#代碼讀取Excel文件并插入到數(shù)據(jù)庫中

這個(gè)示例展示了如何使用C#代碼將Excel工作表數(shù)據(jù)寫入Access數(shù)據(jù)庫。這種方法還需要使用System.Data.OleDb命名空間。如果你使用的.NET Framework沒有它,你可以通過在Package Management Console中輸入以下代碼來安裝它:Install-Package System.Data.OleDb。

讀取Excel文件并插入到數(shù)據(jù)庫的步驟如下:

  • 導(dǎo)入所需的命名空間。
  • 創(chuàng)建 Workbook 類的對(duì)象,并使用 Workbook.LoadFromFile() 方法加載Excel文件。
  • 通過 Workbook.Worksheets[] 屬性獲取第一個(gè)工作表。
  • 通過訪問 Worksheet.Name 屬性,獲取工作表名稱作為表名。
  • 通過使用 Worksheet.Rows[] 屬性訪問第一行的 CellRange 對(duì)象,將每個(gè)列的值存儲(chǔ)在一個(gè)字符串?dāng)?shù)組中,作為列名。
  • 使用 OleDbConnection 連接到Access數(shù)據(jù)庫,指定連接字符串和數(shù)據(jù)庫文件路徑。
  • 通過動(dòng)態(tài)生成一個(gè)用于創(chuàng)建表的SQL查詢字符串,包括表名、列名和數(shù)據(jù)類型,創(chuàng)建數(shù)據(jù)表。
  • 使用 OleDbCommand 對(duì)象和 ExecuteNonQuery 方法執(zhí)行創(chuàng)建表的查詢。
  • 通過遍歷Excel工作表的每一行(從第二行開始),構(gòu)造帶有參數(shù)化查詢的插入語句,將每一行的數(shù)據(jù)插入Access數(shù)據(jù)庫表中。
  • 關(guān)閉數(shù)據(jù)庫連接并釋放資源。

代碼示例:

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

class Program
{
    static void Main(string[] args)
    {
        // 設(shè)置Excel文件路徑
        string excelFilePath = "Sample.xlsx";
        // 設(shè)置Access數(shù)據(jù)庫文件路徑
        string accessDbFilePath = "Sample.accdb";

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

        // 獲取第一個(gè)工作表
        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數(shù)據(jù)庫
        string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessDbFilePath};Persist Security Info=False;";
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            connection.Open();

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

            // 插入數(shù)據(jù)
            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();
        }
    }
}

讀取寫入結(jié)果:

本文中介紹了如何使用 C# 來讀取 Excel 文件并提取數(shù)據(jù)用于各種用途。通過利用 Spire.XLS for .NET 的強(qiáng)大功能,開發(fā)人員可以高效地處理 Excel 數(shù)據(jù)、將其導(dǎo)出為不同格式并增強(qiáng)數(shù)據(jù)驅(qū)動(dòng)型應(yīng)用程序。

以上就是C#實(shí)現(xiàn)讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable的詳細(xì)內(nèi)容,更多關(guān)于C#讀取Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論