c#读取excel数据的两种方法实现

下面是关于“C#读取Excel数据的两种方法实现”的完整攻略。

一、Excel文件读取

1. 使用OLE DB方式读取

前提条件:需要安装Excel程序或Microsoft Access Database Engine软件

使用OLE DB方式读取Excel文件,需要使用System.Data.OleDb命名空间中的相关类,包括OleDbConnectionOleDbDataAdapterDataTable等。

下面是一个简单的示例代码,实现了从Excel文件中读取数据,并将数据导入到DataTable中:

using System.Data;
using System.Data.OleDb;

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\test.xlsx\";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";

string selectCommand = "SELECT * FROM [Sheet1$]";

DataTable dataTable = new DataTable();
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(selectCommand, connection);
    connection.Open();
    dataAdapter.Fill(dataTable);
}

2. 使用Open XML SDK方式读取

Open XML SDK是一个用于处理Office文档的开源.NET库。使用Open XML SDK方式读取Excel文件较为简单,只需要使用DocumentFormat.OpenXml.Packaging命名空间中的SpreadsheetDocument类,即可读取Excel文件并访问其中的任何单元格。

下面是一个示例代码,实现了从Excel文件中读取数据,并将数据导入到DataTable中:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

string filePath = "C:\\test.xlsx";
DataTable dataTable = new DataTable();

using (SpreadsheetDocument document = SpreadsheetDocument.Open(filePath, false))
{
    WorkbookPart workbookPart = document.WorkbookPart;
    IEnumerable<Sheet> sheets = workbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
    WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheets.First().Id);
    Worksheet worksheet = worksheetPart.Worksheet;

    SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart;
    SharedStringTable sharedStringTable = sharedStringTablePart.SharedStringTable;

    foreach (Row row in worksheet.Descendants<Row>())
    {
        if (row.RowIndex == 1)
        {
            foreach (Cell cell in row.Descendants<Cell>())
            {
                dataTable.Columns.Add(GetValueFromCell(cell, sharedStringTable));
            }
        }
        else
        {
            DataRow dataRow = dataTable.NewRow();
            for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
            {
                dataRow[i] = GetValueFromCell(row.Descendants<Cell>().ElementAt(i), sharedStringTable);
            }
            dataTable.Rows.Add(dataRow);
        }
    }
}

private static string GetValueFromCell(Cell cell, SharedStringTable sharedStringTable)
{
    if (cell.DataType == null)
    {
        return cell.InnerText;
    }
    else if (cell.DataType == CellValues.SharedString)
    {
        return sharedStringTable.ElementAt(int.Parse(cell.InnerText)).InnerText;
    }
    else
    {
        return cell.InnerText;
    }
}

二、文件格式要求

无论是使用OLE DB方式还是Open XML SDK方式读取Excel文件,均需要满足以下格式要求:

  1. Excel文件需要处于关闭状态;
  2. Excel文件的第一行需要包含列头信息;
  3. Excel文件需要保存为.xlsx.xls格式。

希望上述内容能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#读取excel数据的两种方法实现 - Python技术站

(1)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#使用SqlDataAdapter对象获取数据的方法

    下面详细讲解一下“C#使用SqlDataAdapter对象获取数据的方法”的完整攻略: 1. 准备工作 在使用SqlDataAdapter对象获取数据之前,需要先引用System.Data.SqlClient库。可以通过在程序代码中添加以下语句实现: using System.Data.SqlClient; 同时需要准备好连接数据库所需的参数,例如服务器名称…

    C# 2023年5月31日
    00
  • Unity实现简单的多人聊天工具

    Unity实现简单的多人聊天工具攻略 前置知识 在进行本教程实践之前,你需要掌握以下知识: 基本的Unity游戏开发知识 C#编程语言基础 网络编程基础知识 准备工作 在进行本教程实践之前,你需要准备以下工具: Unity引擎 Visual Studio编程工具 Photon Unity Network插件 Git版本控制工具 实现步骤 Step 1. 引入…

    C# 2023年6月3日
    00
  • C# 抓取网页内容的方法

    我来为你详细讲解使用C#抓取网页内容的具体攻略。 一、准备工作 在开始之前,我们需要先引用 System.Net 名称空间,该名称空间为我们提供了一系列的网络操作类。 以下是代码示例: using System.Net; 二、HTTP请求 接下来我们需要构造一个 HTTP 请求,通过该请求来获取网页内容。通常我们抓取网页内容所用的 Http 请求类型是 Ge…

    C# 2023年5月31日
    00
  • C#实现将数据导出到word或者Excel中的方法

    下面是详细讲解C#实现将数据导出到word或者Excel中的方法的完整攻略。 导出数据到Excel 安装NPOI 使用NPOI实现将数据导出到Excel,首先需要安装NPOI。可以使用NuGet来安装,打开Visual Studio,右键项目,选择“管理 NuGet 程序包”,在搜索框中输入“NPOI”,选择官方版本进行安装。 创建工作簿和工作表 在项目中添…

    C# 2023年5月15日
    00
  • C# GetEnumerator():返回 IEnumerator 对象,它可用于循环访问集合中的元素

    C#中的GetEnumerator()方法可用于实现自定义迭代器。它基本上是 .NET 迭代器的基础,并且为 LINQ 提供了一个极好的风格。 GetEnumerator()方法概述 GetEnumerator()方法返回一个实现了 IEnumerator 接口的对象。这个接口定义了当前集合中某个位置的元素,以及如何在一个集合中移动以访问其他元素。 实现方式…

    C# 2023年4月19日
    00
  • 详解C#扩展方法原理及其使用

    当我们在编写C#代码的时候,有时候需要为一些类添加自定义的方法,这时候我们就可以使用扩展方法来实现这一功能。扩展方法在C#中的使用非常常见,但是很多人并不理解其实现原理及其使用方法。本文将详细讲解C#扩展方法原理及其使用方法,帮助大家更好地理解和使用扩展方法。 什么是扩展方法 扩展方法是C#2.0及以后版本中引入的概念,它允许我们为已有的类型添加自定义方法。…

    C# 2023年6月7日
    00
  • 如何在UpdatePanel中调用JS客户端脚本

    在 ASP.NET 中,可以使用 UpdatePanel 控件来实现局部异步刷新页面的效果。但是,默认情况下,UpdatePanel 不支持调用客户端JS脚本。本文就讲解如何在 UpdatePanel 中调用JS客户端脚本,通过两个示例帮助读者更好地理解。 方法一:使用ScriptManager类的RegisterStartupScript方法 在 Upda…

    C# 2023年6月6日
    00
  • 在 C# 中使用 Span 和 Memory 编写高性能代码的详细步骤

    在 C# 中使用 Span<T> 和 Memory<T> 可以大幅提升代码性能,并且这两个类型被广泛地用于处理数组和内存操作。在本文中,我们将详细介绍如何使用Span<T> 和 Memory<T> 来编写高性能代码。 一、什么是 Span 和 Memory 首先,我们需要了解一下什么是 Span<T&gt…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部