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#读写App.config,ConfigurationManager.AppSettings 不生效的解决方法

    针对 “c#读写App.config,ConfigurationManager.AppSettings不生效的解决方法” 这个问题,我们可以从以下几个方面入手: 1. 确认App.config格式是否正确 在使用App.config的时候,我们需要确保这个文件名及格式都是正确的,这是一个很容易被忽略的问题。首先,确认你的App.config文件是放在程序的根…

    C# 2023年5月15日
    00
  • C#中FileSystemWatcher的使用教程

    我将详细讲解如何使用C#中的FileSystemWatcher来监听文件系统的改变。本教程将包含以下内容: 简介:FileSystemWatcher是什么以及如何使用它 监听文件夹和文件变化的方式 示例说明 1. 简介 FileSystemWatcher是.NET Framework中的一个类,它以异步的方式监听文件和目录的变化。它可以监控以下变化: 文件或…

    C# 2023年5月31日
    00
  • 记一次 Windows10 内存压缩模块 崩溃分析

    一:背景 1. 讲故事 在给各位朋友免费分析 .NET程序 各种故障的同时,往往也会收到各种其他类型的dump,比如:Windows 崩溃,C++ 崩溃,Mono 崩溃,真的是啥都有,由于基础知识的相对缺乏,分析起来并不是那么的顺利,今天就聊一个 Windows 崩溃的内核dump 吧,这个 dump 是前几天有位朋友给到我的,让我帮忙看一下,有了dump之…

    C# 2023年4月27日
    00
  • asp.net Core中同名服务注册的实现代码

    ASP.NET Core是一个跨平台的Web应用程序框架,可以在Windows、Linux和macOS上运行。在ASP.NET Core中,同名服务注册是指向服务容器注册两个或多个具有相同服务名称的服务实例。下面是实现同名服务注册的代码攻略。 1. 同名服务注册的实现方式 实现同名服务注册可以使用IServiceCollection接口的Add方法。Add方…

    C# 2023年5月31日
    00
  • 【代码设计】C# 实现 AOP 面向切面编程

        简单记录一下对AOP的认识,正文为3个部分     一、AOP由来     二、用DispatchProxy动态代理实现AOP     三、通过特性标记,处理多种不同执行前、执行后的逻辑编排   一、AOP 由来 IUserHelper userHelper = new CommonUserHelper(); // commonUser.Create…

    C# 2023年4月18日
    00
  • ASP.NET Core MVC 从入门到精通之布局

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年4月22日
    00
  • C# 创建控制台应用程序

    C#创建控制台应用程序的完整攻略 在C#中,控制台应用程序是一种常见的应用程序类型,可以在命令行中运行。本文将提供一个完整的C#创建控制台应用程序的攻略,包括创建、编译、运行、调试等操作。 步骤1:创建控制台应用程序 要创建控制台应用程序,可以按照以下步骤操作: 打开Visual Studio。 选择“文件”->“新建”->“项目”。 在“新建项…

    C# 2023年5月15日
    00
  • C#使用round函数四舍五入的方法

    使用round()函数可以轻松实现C#四舍五入的功能。下面是使用round()函数四舍五入的方法的完整攻略: 1. round()函数用法 在C#中,round()函数是一个标准库函数,用于对数值进行四舍五入。该函数的语法如下: Math.Round(double value, int digits, MidpointRounding mode); 其中,v…

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