C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)

C#仪器数据文件解析Excel文件的方法浅析

在C#编程中,经常需要从仪器导出的数据文件进行Excel格式的解析。本文将针对xls和xlsx两种常见的Excel文件格式,分别进行简单的介绍。

Excel文件的格式说明

Excel文件主要包括两个文件格式,即xls和xlsx。其中,xls文件是Excel 97-2003版本的二进制文件格式,而xlsx文件是Excel的Office Open XML文件格式。在C#中解析xls或xlsx文件,一般需先引用Interop.Excel库。

解析xls格式的Excel文件

对于xls格式的Excel文件,可以使用Microsoft.Office.Interop.Excel库进行解析。下面给出一个简单的代码示例:

using System.Data.OleDb;
using Excel = Microsoft.Office.Interop.Excel;

// ...

public void ParseXlsFile(string filePath)
{
    Excel.Application app = new Excel.Application();
    Excel.Workbook book = app.Workbooks.Open(filePath);
    Excel.Worksheet sheet = (Excel.Worksheet)book.Worksheets[1];
    Excel.Range range = sheet.UsedRange;

    string[,] data = new string[range.Rows.Count, range.Columns.Count];
    for (int i = 0; i < range.Rows.Count; i++)
    {
        for (int j = 0; j < range.Columns.Count; j++)
        {
            data[i, j] = (range.Cells[i+1, j+1] as Excel.Range).Value2.ToString();
        }
    }

    book.Close();
    app.Quit();

    // Do something with the data array...
}

在以上代码中,我们首先创建了一个Excel Application对象,然后打开Excel文件,获取其第一个Worksheet,并查询其数据范围。通过遍历数据范围,我们可以得到文件中的所有数据。其中,数据是以二维数组的形式存储的,可以根据需求进行后续的数据处理。

解析xlsx格式的Excel文件

对于xlsx格式的Excel文件,我们可以使用OpenXml库进行解析。下面给出一个简单的代码示例:

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

// ...

public void ParseXlsxFile(string filePath)
{
    using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePath, false))
    {
        WorkbookPart workbookPart = doc.WorkbookPart;

        Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault();
        Worksheet worksheet = ((WorksheetPart)workbookPart.GetPartById(sheet.Id)).Worksheet;
        SheetData sheetData = worksheet.Elements<SheetData>().First();

        string[,] data = new string[sheetData.ChildElements.Count, worksheet.Descendants<Row>().First().Descendants<Cell>().Count()];
        int row = 0;
        foreach (Row r in sheetData.ChildElements)
        {
            int col = 0;
            foreach (Cell c in r.ChildElements)
            {
                data[row, col++] = c.InnerText;
            }
            row++;
        }

        // Do something with the data array...
    }
}

在以上代码中,我们首先使用OpenXml库打开Excel文件。然后查询WorkbookPart、WorksheetPart、SheetData等元素,并根据需要遍历其子元素获取数据。在此,我们同样使用二维数组的形式存储数据。

示例说明

假设我们有一个名为“data.xls”的Excel文件,其中包含以下数据:

ID Name Age Gender
1 Tom 18 M
2 Amy 20 F
3 John 22 M

现在我们希望使用C#将数据读取出来,存储到一个数组中。可以使用以上介绍的方法,代码如下:

string filePath = "data.xls";
ParseXlsFile(filePath);

如果我们有一个名为“data.xlsx”的Excel文件,其中包含以下数据:

ID Name Age Gender
1 Tom 18 M
2 Amy 20 F
3 John 22 M

那么我们可以使用以下代码将数据读取出来:

string filePath = "data.xlsx";
ParseXlsxFile(filePath);

以上就是关于C#解析Excel文件的简单介绍。通过以上方法,您可以快速地将Excel文件中的数据读取出来,并存储到您的程序中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#使用private font改变PDF文件的字体详解

    下面是 “C#使用private font改变PDF文件的字体详解” 的完整攻略。 什么是Private Font Private Font是一种自定义字体,可以正常安装和使用,但在未安装该字体的计算机上会出现显示问题。因此我们需要在程序中安装该字体,在PDF文件中使用该字体。 安装Private Font 首先在项目目录下新建一个名为“Fonts”的文件夹…

    C# 2023年6月3日
    00
  • asp.net文件上传带进度条实现案例(多种风格)

    针对“asp.net文件上传带进度条实现案例(多种风格)”这个话题,以下是一个完整的攻略。 1. 背景介绍 在很多web应用程序中,都需要用户上传文件的功能。而对于大文件或者网络不稳定的情况下,上传进度条的需求就非常迫切了。要满足这个需求,可以使用一些第三方的插件或者框架,比如jQuery-File-Upload或者FineUploader等。但这些插件或者…

    C# 2023年6月1日
    00
  • C#使用windows服务发送邮件

    下面是详细讲解C#使用Windows服务发送邮件的完整攻略。 1. 什么是Windows服务发送邮件 Windows服务是在后台运行的应用程序,它没有界面和交互,但是可以在指定的时间执行预定义的任务。Windows服务发送邮件是指利用Windows服务应用程序实现设置好相关参数后,程序将会在固定的时间自动发送邮件。 2. 基本步骤 Windows服务发送邮件…

    C# 2023年5月31日
    00
  • Blazor UI库 Bootstrap Blazor 快速上手 (v7.5.7)

    最近组件库更新比较频繁,有些同学感觉有点迷茫,就着今天刚上了张老板一节课立马撸个新的上手教程回馈社区, ;-> 1.新建工程b18QuickStartv757,将项目添加到解决方案中 dotnet new blazorserver -o b18QuickStartv757 dotnet sln add b18QuickStartv757/b18Quic…

    C# 2023年5月4日
    00
  • 使用C#配合ArcGIS Engine进行地理信息系统开发

    一、ArcGIS Engine ArcGIS Engine是ESRI公司出品的用于构建自定义GIS应用程序的开发包。ArcGIS Engine基于COM和现代.NET框架技术体系结构,具有高效、可扩展的GIS开发架构和丰富的应用开发资源和文档。ArcGIS Engine可与ArcGIS Server、ArcGIS for Desktop、ArcGIS Onl…

    C# 2023年6月1日
    00
  • C#/VB.NET 在Word中添加条码、二维码的示例代码

    请注意以下的详细攻略: 准备工作 在使用C#/VB.NET代码添加条码或者二维码前,我们需要先安装对应的NuGet包。在Visual Studio中,可以通过NuGet Package Manager来安装。 对于添加条码,我们可以使用一个叫做ZXing.Net的Nuget包。ZXing.Net是一个用C#编写的开源程序库,用于读写二维码和条形码。它支持多种…

    C# 2023年5月31日
    00
  • ASP.NET Core中自定义路由约束的实现

    ASP.NET Core中自定义路由约束的实现 在 ASP.NET Core 中,路由约束是一种用于限制路由匹配的机制。默认情况下,ASP.NET Core 提供了一些常见的路由约束,例如正则表达式约束和长度约束。但是,有时候我们需要自定义路由约束来满足特定的需求。在本攻略中,我们将介绍 ASP.NET Core 中自定义路由约束的实现,包括如何创建和使用自…

    C# 2023年5月17日
    00
  • asp.net(c#)判断远程图片是否存在

    当我们在使用asp.net(c#)获取远程图片时,我们需要先判断该图片是否存在。为了判断图片是否存在,我们可以使用HTTP协议的HEAD请求方法。HEAD请求方法会返回HTTP头信息,但不会返回HTTP body信息。如果返回状态码为200,说明该图片存在;如果返回状态码为404,说明该图片不存在。 下面是使用C#代码判断远程图片是否存在的完整攻略: 步骤一…

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