首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Open XML从C#中的Excel到DataTable

使用Open XML从C#中的Excel到DataTable,可以通过以下步骤完成:

  1. 安装Open XML SDK:在C#中,可以使用Open XML SDK来处理Excel文件。首先,需要安装Open XML SDK。可以通过NuGet包管理器来安装,或者从官方网站下载。
  2. 引入命名空间:在C#代码中,需要引入以下命名空间:
代码语言:csharp
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Data;
using System.Linq;
  1. 读取Excel文件:使用Open XML SDK,可以读取Excel文件中的数据,并将其转换为DataTable对象。以下是一个示例代码:
代码语言:csharp
复制
public static DataTable ReadExcelToDataTable(string filePath, string sheetName)
{
    DataTable dataTable = new DataTable();
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, false))
    {
        WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
        Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(s => s.Name == sheetName);
        if (sheet == null)
        {
            return null;
        }
        WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
        Worksheet workSheet = worksheetPart.Worksheet;
        SheetData sheetData = workSheet.GetFirstChild<SheetData>();
        Row row = sheetData.Descendants<Row>().FirstOrDefault();
        if (row == null)
        {
            return null;
        }
        foreach (Cell cell in row.Descendants<Cell>())
        {
            dataTable.Columns.Add(GetCellValue(spreadsheetDocument, cell));
        }
        foreach (Row dataRow in sheetData.Descendants<Row>().Skip(1))
        {
            DataRow newRow = dataTable.NewRow();
            int i = 0;
            foreach (Cell cell in dataRow.Descendants<Cell>())
            {
                newRow[i] = GetCellValue(spreadsheetDocument, cell);
                i++;
            }
            dataTable.Rows.Add(newRow);
        }
    }
    return dataTable;
}

private static string GetCellValue(SpreadsheetDocument document, Cell cell)
{
    SharedStringTablePart stringTablePart = document.WorkbookPart.SharedStringTablePart;
    if (cell.DataType != null && cell.DataType == CellValues.SharedString)
    {
        int index = int.Parse(cell.CellValue.Text);
        return stringTablePart.SharedStringTable.ChildElements[index].InnerText;
    }
    return cell.CellValue.Text;
}
  1. 调用方法:可以在C#代码中调用ReadExcelToDataTable方法,将Excel文件路径和工作表名称作为参数传递,将返回的DataTable对象进行处理。
代码语言:csharp
复制
string filePath = "path/to/excel/file.xlsx";
string sheetName = "Sheet1";
DataTable dataTable = ReadExcelToDataTable(filePath, sheetName);

通过以上步骤,可以使用Open XML从C#中的Excel到DataTable。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#进阶-OleDb操作Excel和数据库

C#编程使用OleDb可以方便地实现对Excel文件和数据库操作。本文探讨了在C#使用OleDb技术操作Excel和数据库策略。...读取数据使用OleDb读取Excel文件通常涉及以下步骤:创建OleDbConnection对象来建立Excel文件连接。创建OleDbCommand对象来定义要执行SQL查询。...12.0 Xml;HDR=YES;'";using(OleDbConnection conn = new OleDbConnection(connectionString)){ conn.Open...写入数据要向Excel文件写入数据,可以使用OleDbConnection和OleDbCommand对象。下面示例展示了如何打开一个连接,单条写入数据Excel表格。...文件批量写入数据,可以构建多个INSERT语句,或使用OleDbDataAdapter和DataTable,通过调整DataTable数据然后调用Update()方法来实现。

5600

Unity数据持久化,使用excel、文件、yaml、xml、json等方式

Unity数据持久化,可以使用excel、文件、yaml、xml、json等方式。在Unity读取和写入Excel文件可以通过使用一些第三方库来实现。...以下是一个常见方法:首先,下载并导入一个支持Excel文件操作第三方库,比如EPPlus。你可以GitHubEPPlus页面下载最新版本。...在Unity创建一个C#脚本,用于处理Excel文件读取和写入操作。在脚本引入EPPlus命名空间。...使用EPPlus时,请确保目标Excel文件格式正确,并且库版本与Unity兼容。以上是使用EPPlus库在Unity读取和写入Excel文件基本方法。...写入数据XML文件可以使用XmlDocument对象方法来创建XML文档结构,并将数据写入文件

86982

代码内容:使用C#和Fizzler探索Instagram深处

本文将介绍如何使用C#和Fizzler这两个强大工具,来实现一个简单而高效Instagram爬虫,代码内容,探索Instagram深处。...为了实现这个过程,我们需要使用以下两个工具:C#C#是一种面向对象编程语言,具有强大网络编程能力,可以方便地发送和接收HTTP请求,以及处理JSON和XML等格式数据。...Instagram网页版是通过Ajax技术来动态加载内容,所以我们不能直接网页源代码获取我们想要数据,而是需要找到InstagramAPI地址和参数,然后通过HTTP请求来获取JSON格式数据...我们可以将这些内容保存到一个自定义,方便后续处理和存储。使用多线程技术来提高采集效率。...Instagram爬虫,代码内容,探索Instagram深处。

17810

csharp代码每日一例:使用NPOI DLL 将Datatable数据导出为Excel文件

NPOI介绍: NPOI作为国人开发开源项目,文档完善,更新及时,为.NET开发者提供了便利,主要用于生成Excel报表,搜索引擎模块Excel文本提取,批量生成Excel文件,基于Excel...使用NPOI生成Excel 在本文中,我们将学习如何在c#使用NPOI将DataTable数据导出或转换成Excel文件。首先,我们需要安装像NPOI和Newtonsoft这样软件包。...在添加所有包和名称空间之后,然后创建一个类,用于将JSON转换为List,然后设置列名称,并设置一个for循环,用于获取和设置数据Excel计算单元。请参阅下面的完整步骤以生成Excel文件。...using System.Data; using NPOI.HSSF.UserModel; using Newtonsoft.Json; using System.IO; 第二步是数据库获取数据并将其存储...文件,并将其保存在特定路径

2.3K20

如何使用免费控件将Word表格数据导入Excel

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要数据存储在word表格,而不是在Excel,这样处理起来非常麻烦,尤其是在数据比较庞大时候, 这时我迫切地需要将...word表格数据导入Excel。...相信大家也碰到过同样问题,下面我就给大家分享一下在C#如何使用免费控件来实现这一功能。这里,我使用了两个免费API, DocX和Spire.Xls。 有需要朋友可以下载使用。...以下是详细步骤: 首先我使用DocX API 来获取word表格数据,然后将数据导入System.Data.DataTable对象。...数据导入worksheet; //将dataTable数据插入worksheet,1代表第一行和第一列 sheet.InsertDataTable(dt, true, 1, 1); 步骤

4.3K10

使用shell脚本导出MySql查询月表数据EXCEL

经常会踫这样场景需求:自定义时间MySql流水月表SELECT出来数据excel报表文件,所以自己写了这个shell脚本来处理。...1 实现思路 代码比较简单,主要使用了mysql -e执行SQL语句,然后重定向txt文件。...由于linux默认是uft-8格式,所以在使用awk命令处理完txt文件后,通过iconv命令把utf8文件转换成最终gbk文件。.../bin/bash # FileName: exportmysqlshell1.sh # Description: 使用shell脚本导出MySql月表数据EXCEL # Simple...echo "== iconv success. ==" fi 3 脚本管理 目前已经把这个脚本放在Github了,地址是https://github.com/vfhky/shell-tools,以后脚本更新或者更多好用脚本也都会加入这个工程

12010

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册Microsoft.Jet.OLEDB.4.0 提供程序

笔者在项目中做做了一个Excel表格中导入数据模块、大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel...COM组件(会有版本问题) 3)采用伪Excel文件、即使用文本流方式根据需求自己定义数据格式。...同时在服务端进行反格式化 笔者采用是方案一、相关联开发环境如下: Windows 7(x64) Visual Studio 2010 方案中使用代码: public sealed class ExcelHelper...分析原因: 用于 Access 和 Excel 数据库 Microsoft OLE DB Provider for Jet 在 64 位版本不可用。...最终解决办法: 在IIS启用32位应该程序、设置见图。 ?

1.9K10

C# NOPI 项目实战(经典)(可下载项目源码)

这篇文章主要介绍了如何安装NPOI,以及NPOI具体如何使用,并且用具体实例介绍了excel导入datagridview以及 datagridview如何导出到excel并保存。...今天这篇文章主要是实现多个excel多张表格合并,这个是我们数据处理时候经常使用一个功能,其实最佳途径是用excel自带power query(excel2016自带,excel2016以下版本需要安装插件...),用这个功能你甚至不需要写一句代码,就可以轻轻松松实现百万计甚至千万级数据操作,当然你也可以用excel里面的vba,这些都可以,但是这不是今天要将内容,今天内容就是要用C# 实现数据表格合并。...导入datatable /// /// excel路径 /// <param...\TPS20\Desktop\excel\"); for (int i = 0; i < sheetCount; i++) //遍历一个excel每个sheet

2.2K20

Asp.Net Mvc一些初级问题整理

(比如仅执行一些数据库操作) 很简单,只要在Controller定义一个void类型public方法即可 public void DeleteData() { using (SQLiteConnection...}; }  如果要返回xml,把text/plain改为text/xml即可. 3.如何把DataTable传给视图?...虽然很多官方教程都是推荐使用强类型视图,但是需求是千变万化,如果确实要传递DataTable给视图,可参考下面这个做: public ActionResult Index() { DataTable...tbl = ViewData["data"] as DataTable; foreach (DataRow dr in tbl.Rows) { //... } %> 4.如何使用自定义控件...分二种情况: void类型action(即问题1所说不返回视图action): 有且只有一种方法: Response.Redirect("/product/Index");  注意: 如果写成

97180

VBA专题06-4:利用Excel数据自动化构建Word文档—Excel与Word整合示例1

使用VBA自动Excel获取数据来创建Word报表文档,一般按照以下步骤: 1.创建Word文档模板,用来作为数据分析结果发布平台。在模板,在每个要插入数据位置定义书签。...2.使用VBA,将Excel数据复制Word文档,从而形成一份报表文档。 示例1:自动复制Excel数据区域Word文档 本示例使用前期绑定,即首先要在VBE设置对Word对象库引用。...图7:示例数据工作表 创建一个名为PasteTable.docx文档,并在想要粘贴数据位置插入一个名为DataTable书签。关闭该文档并将其与示例Excel文档放在相同目录。...数据Word时,表格太宽往往会导致格式问题,代码中使用了一个技巧来调整表格列宽,即每列宽度设置为表格总宽度除以表格列数。...有时,需要将Excel工作表多个数据区域复制Word文档,并且这些数据区域大小还不相同。

5K10

.NET Core使用NPOI将Excel数据批量导入MySQL

前言:   在之前几篇博客写过.NET Core使用NPOI导出Word和Excel文章,今天把同样我们日常开发中比较常用使用Excel导入数据MySQL数据库文章给安排上。...二、ASP.NET Core使用EF Core连接MySQL执行简单CRUD操作:   因为该篇文章会涉及MySQL数据库操作,所以前提我们需要有一点CRUD基础。...表格数据,将Excel文件流转化为dataTable数据源 /// 默认第一行为标题 /// /// <param name...表格除标题以为所有数据源,转化为dataTable表格数据源 for (var i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum...: https://www.cnblogs.com/Can-daydayup/p/11588531.html .NET Core使用NPOI将Excel数据批量导入MySQL: https

4.6K20
领券