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

通过打开的xml sdk linq查询获取具有行和列位置的excel单元格值

通过打开的XML SDK LINQ查询获取具有行和列位置的Excel单元格值,可以使用以下步骤:

  1. 首先,需要使用XML SDK打开Excel文件。XML SDK是一种用于处理Office文件的开发工具包,可以通过编程方式读取和写入Excel文件。
  2. 使用LINQ查询语法来筛选和获取具有行和列位置的单元格值。LINQ是一种用于查询和操作数据的语言集成查询(Language Integrated Query)。
  3. 在LINQ查询中,可以使用LINQ to XML来解析Excel文件的XML结构,并使用LINQ查询语法来筛选和获取特定单元格的值。
  4. 通过查询XML结构,可以获取单元格的行和列位置信息,并获取相应单元格的值。

以下是一个示例代码,演示如何使用XML SDK和LINQ查询来获取具有行和列位置的Excel单元格值:

代码语言:csharp
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System;
using System.Linq;

public class ExcelHelper
{
    public static string GetCellValueWithPosition(string filePath, string sheetName, int rowNumber, int columnNumber)
    {
        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)
            {
                throw new Exception("Sheet not found");
            }
            
            WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
            Worksheet worksheet = worksheetPart.Worksheet;
            
            Cell cell = worksheet.Descendants<Cell>()
                .FirstOrDefault(c => GetColumnNumberFromColumnName(GetColumnName(c.CellReference)) == columnNumber && GetRowNumberFromCellReference(c.CellReference) == rowNumber);
            
            if (cell == null)
            {
                throw new Exception("Cell not found");
            }
            
            return GetCellValue(cell, workbookPart);
        }
    }
    
    private static string GetCellValue(Cell cell, WorkbookPart workbookPart)
    {
        string value = cell.InnerText;
        
        if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
        {
            SharedStringTablePart sharedStringTablePart = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
            
            if (sharedStringTablePart != null)
            {
                value = sharedStringTablePart.SharedStringTable.ElementAt(int.Parse(value)).InnerText;
            }
        }
        
        return value;
    }
    
    private static string GetColumnName(string cellReference)
    {
        return new string(cellReference.Where(c => char.IsLetter(c)).ToArray());
    }
    
    private static int GetColumnNumberFromColumnName(string columnName)
    {
        int columnNumber = 0;
        int mulitplier = 1;
        
        foreach (char c in columnName.Reverse())
        {
            columnNumber += (c - 'A' + 1) * mulitplier;
            mulitplier *= 26;
        }
        
        return columnNumber;
    }
    
    private static int GetRowNumberFromCellReference(string cellReference)
    {
        return int.Parse(new string(cellReference.Where(c => char.IsDigit(c)).ToArray()));
    }
}

使用示例:

代码语言:csharp
复制
string filePath = "path/to/excel/file.xlsx";
string sheetName = "Sheet1";
int rowNumber = 2;
int columnNumber = 3;

string cellValue = ExcelHelper.GetCellValueWithPosition(filePath, sheetName, rowNumber, columnNumber);
Console.WriteLine("Cell value: " + cellValue);

这段代码将打开指定的Excel文件,然后在指定的工作表中查找具有给定行和列位置的单元格,并返回其值。请根据实际情况修改文件路径、工作表名称、行号和列号。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):提供高可靠、低成本的云端存储服务,适用于存储和处理任意类型的文件。详情请参考:腾讯云对象存储(COS)
  • 腾讯云云服务器(CVM):提供可扩展的云服务器实例,适用于各种计算需求。详情请参考:腾讯云云服务器(CVM)
  • 腾讯云数据库(TencentDB):提供多种类型的数据库服务,包括关系型数据库、NoSQL数据库和数据仓库等。详情请参考:腾讯云数据库(TencentDB)
  • 腾讯云人工智能(AI):提供各种人工智能服务和工具,包括图像识别、语音识别、自然语言处理等。详情请参考:腾讯云人工智能(AI)
  • 腾讯云物联网(IoT):提供物联网平台和解决方案,用于连接和管理物联网设备和数据。详情请参考:腾讯云物联网(IoT)
  • 腾讯云区块链(BCBaaS):提供区块链服务和解决方案,用于构建和管理区块链应用程序。详情请参考:腾讯云区块链(BCBaaS)
  • 腾讯云视频处理(VOD):提供视频处理和分发服务,包括转码、截图、水印、加密等功能。详情请参考:腾讯云视频处理(VOD)
  • 腾讯云音视频通信(TRTC):提供实时音视频通信服务和解决方案,用于构建实时音视频通信应用程序。详情请参考:腾讯云音视频通信(TRTC)
  • 腾讯云云原生应用引擎(TKE):提供容器化应用的管理和部署服务,用于构建和管理云原生应用程序。详情请参考:腾讯云云原生应用引擎(TKE)

请注意,以上产品和链接仅作为示例,具体选择和推荐的产品应根据实际需求和情况进行评估和决策。

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

相关·内容

用过Excel,就会获取pandas数据框架中

Excel中,我们可以看到单元格,可以使用“=”号或在公式中引用这些。...要获取前三,可以执行以下操作: 图8 使用pandas获取单元格获取单个单元格,我们需要使用交集。...想想如何在Excel中引用单元格,例如单元格“C10”或单元格区域“C10:E20”。以下两种方法都遵循这种思想。 方括号表示法 使用方括号表示法,语法如下:df[列名][索引]。...接着,.loc[[1,3]]返回该数据框架第1第4。 .loc[]方法 正如前面所述,.loc语法是df.loc[],需要提醒(索引)可能是什么?...图11 试着获取第3Harry Poter国家名字。 图12 要获得第2第4,以及其中用户姓名、性别年龄,可以将列作为两个列表传递到参数“row”“column”位置

19K60

Office Open XML学习(1)-创建excel文档,并向单元格中插入字符串

/view/1201978.htm 要在C#中使用Open XML,需先下载Open XML SDK (目前最高版本为2.0),下载地址为:http://www.microsoft.com/downloads...FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0 安装完以后,就能直接使用了,下面的代码演示了,如何创建一个Excel文档,并创建一个工作表"博客园",最后在该工作表单元格...http://www.cnblogs.com/yjmyzz", shareStringPart); //设置单元格"" cell.DataType...(字母)顺序插入,因此要先根据"引用字符串"查找插入位置 Cell refCell = null; foreach (Cell cell...前面提到过Open XML是一个基于XML标准,Open XML SDK安装后,提供了一个工具"Open XML SDK 2.0 Productivity Tool",可以用来查看所有支持Open XML

2.7K100
  • epplus word html,EPPlus简介

    简介:Epplus是一个使用Open Office XML(Xlsx)文件格式,能读写Excel 2007/2010文件开源组件 功效:支持对excel文档汇入汇出,图表(excel自带图表基本都可以实现...,意思是第三乘以第四赋值给第五 worksheet.Cells[“E2:E4”].Formula = “C2*D2”; //这是求和公式,意思是第二第三到第四第三例求和后赋给第五第三...;//第一第一到第四第五数据设置筛选器 11.工作簿进行计算,通常Excel会自动进行计算,但如果你打开工作簿机器上没有计算引擎,那么这行代码就发挥了作用。...Sample5 根据Excel数据画饼图 Sample6 没有仔细看,导出Excel相当复杂,各种图标,各种图表 Sample7 性能表现,导出66万条数据也就一分钟不到,主要时间耗在了格式化...ExcelRange cols = ws.Cells[“A:XFD”];//选中所有的,共16384 Sample8 读取Excel数据,并对Excel中Sheet数据进行linq查询,并输出

    2K41

    Excel催化剂开源第30波-在Excel上尽情地使用LINQ

    对于笔者这样数据分析工作者来说,对数据库有较深掌握,当然少不了对SQL查询深度使用,如果在编程世界中,可以复用这样能力,真的是一件多么令人高兴事情。...在.Net世界中,恰恰提供了这样能力,用LINQ,仿佛回到了写SQL语句查询环境中,对编辑中使用各种对象集合,在排序、筛选、去重等SQL语句常用功能上,在LINQ帮助下,一样可以对代码中集合对象进行这些操作...例如经常需要遍历单元格区域,肯定少不了For Each+IF等代码,但使用了LINQ后,真心变得很简单,特别是操作一个多表单结构数据时,前面提到笔者喜欢将其转换为DataTable,因为这样数据结构就可以用上了...具体地址为:https://github.com/paulyoder/LinqToExcel 在Excel上使用LINQ访问集合对象 简单演示下用过一些小代码 获取当前数据区域中非隐藏行号集合。...= Common.ExcelApp.Intersect(selRange, selRange.Worksheet.UsedRange); //只要可见单元格,且只要有单元格

    1.8K20

    C#仪器数据文件解析-Excel文件(xls、xlsx)

    采集Excel文件相比采集pdf文件更容易、程序更健壮,毕竟Excel中数据有明确定义,利于数据解析。...虽然两种文件格式定义不同,但解析文件数据可以通过中间件,因此只要理解了Excel文件工作簿、sheet页、单元格等概念即可,无需了解其文件详细定义方式。...常用采集Excel文件数据方式有: 1.通过OLE DB方式,将Excel文件作为数据库进行查询获取数据; 2.使用MS Excel应用程序来读取Excel文件数据; 3.使用WPS应用程序来读取...,另外通过DCOM调用应用程序需要配置权限; 无需应用程序方式,可以通过NPOI、MS Open XML等方式,使用XML读取Excel组件一般仅支持excel 2007+,毕竟该版本Excel文件是...以下代码为打开Excel文件,并读取其sheet页、单元格: FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read

    2.1K80

    python操作excel表格(xlrdxlwt)

    即合并行单元格读取第一个索引,合并列单元格读取第一个索引,如上述,读取合并单元格"好朋友"读取合并单元格"暂无"只能如下方式: >>> print sheet2.col_values(4)...,但是表格本身普通单元格也可能是空,要怎么获取单元格所谓"第一个索引"呢?...通过Sheet对象可以获取各个单元格,每个单元格是一个Cell对象。 Sheet.name返回表格名称。 Sheet.nrows返回表格行数。 Sheet.ncols返回表格数。...Sheet.col(c)获取指定,返回Cell对象list。 Sheet.col_values(c)获取指定,返回list。 Sheet.cell(r, c)根据位置获取Cell对象。...Sheet.cell_value(r, c)根据位置获取Cell对象。 Cell.value返回单元格

    2.5K10

    《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)

    对于OLE2版本Excel,一个Sheet工作表它最多支持到65536,列支持到256; 对于OOXML版本Excel,一个Sheet工作表它支持到1048576,列支持到16384...getContents()方法获取单元格内容,返回为一个字符串 String str_colArow1 = colArow1.getContents();...\\Files\\test-data1.xls")); 2)下面的用于获取Excel文件中第一个工作表。 以类似方式,如果您正在处理Excel文件有多个工作表,则可以获取任何其他工作表。...Sheet sheet1 = wrk1.getSheet(0); 3)下面的代码根据传递给getCell方法参数为我们提供了对工作表中特定单元格引用。 第一个参数表示,第二个参数表示。...,可是打开看起来是Excle,然后我把这个Excel重新另存为一个Excel,发现他默认保存类型是“单个文件网页”(通过EditPlus打开Excle可以看到是网页文件),然后把他保类型修改为Microsoft

    86120

    python操作Excel学习笔记,以后储存数据 办公很轻松!

    ;接着我们获取单个单元格以及一个范围单元格。...通过以上例子我们成功写入Excel文件,可以看给特定单元格赋值方法有两种,一种是sheet['C4'].value = “形式,另一种时sheet.cell(row=4,column=4)...这个例子思路首先要将第一所有,以及第一所有写入;接着某一个单元格就应该等于这个单元格所有第一乘以所在第一。具体实现如下: ? ?...第三个例子为:编写一个程序,翻转电子表格中行单元格。例如,第 5 第 3 将 出现在第 3 第 5 (反之亦然)。这应该针对电子表格中所有单元格进行。实现前后效果如下: ? ?...实现思路为:逐行获取值,存为列表;最后将所有的存成一个大列表,这样“列表”[ i ][ j ]获得就为第i第j单元格;最后逐一取出列表,赋值给新列表第j第i单元格

    4.4K10

    .NET导出Excel四种方法及评测

    OpenXML也是开源项目,地址是:https://github.com/OfficeDev/Open-XML-SDK。...通过调用Measure函数,可以测得传入action耗时内存占用。默认会调用5次,可以从5次测试结果中取出能反映性能。...但此示例共享变量值收益很低,但会极大地增加代码复杂性(普通用户可能很难写出),因此本示例未使用SharedStringTable; 它基于单元格位置标识,如B3(第三第二),因此索引方式比EPPlus.../NPOI都要复杂; 代码示例中使用'A' + i - 1来计算位置标识,因此这个示例不能用于超过26(字母数)数据; 代码使用LINQ(而不是循环)来枚举所有/,可以让代码在已经非常复杂情况下...如果基于xml做抽象——也是很正常做法,拼出6万/10数据,需要至少60万个xml标签做拼接,很显然这需要分配/浪费大量内存,因此性能上不来。

    4.8K10

    Excelize 2.5.0 正式发布,这些新增功能值得关注

    此版本中最显著变化包括: 兼容性提示 打开已有工作簿或在获取迭代器后,需要调用对应 Close 函数关闭工作簿和数据流 修改 ReadZipReader 为 File 实现, 支持通过选项指定解压至内存或文件系统...支持设置整行样式, 相关 issue #990 新增 API: GetCellType 支持获取单元格数据类型, 相关 issue #417 #520 新增 API: SetAppProps ...GetAppProps 支持设置与获取工作簿应用程序属性, 相关 issue #1095 GetCellValue, GetRows, GetCols, Rows Cols 支持指定是否读取单元格原始而不应用数字格式表达式...以支持指定打开每个工作表以及共享字符表时内存解压上限 创建样式时,若给定自定义数字格式无效,将返回错误提示,相关 issue #1028 流式写入现已支持设置样式 流式写入器将为时间类型单元格创建时间数字格式样式...,相关 issue #1107 支持设置数据透视表报表布局“以压缩形式显示”或“以大纲形式显示”, 相关 issue #1029 /迭代器支持获取当前行/序号/总数, 相关 issue #1054

    1.3K11

    python操作Excel,你觉得哪个库更好呢?

    在这种情况下,通过忽略文件BLANKMULBLANK记录,“空白”单元格(它们具有自己格式信息但没有数据)会被视为空白 param: on_demand 按需加载工作表。...注: Sheet类方法、属性等: sheet.cell(rowx, colx): 根据给出参数获取得到cell类,返回一个Cell类实例对象。...获取对应cell: cell=sheet.cell(rowx=29, colx=3) #根据给出参数获取得到cell类,返回一个Cell类实例对象. sh.cell_value(rowx=...相反,拆分单元格后将这个大单元格返回到原来左上角位置。...如果这些要合并单元格都有数据,只会保留左上角数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。 以下是拆分单元格代码。拆分后,回到A1位置

    12.4K31

    Power Query 真经 - 第 6 章 - 从Excel导入数据

    需要注意是:其本身计算结果为一个单元格引用,但其是 0.9,也就是说:0.9 不是这里真正想要,而想要是 0.9 所在位置引用。这就构成了: = DynamicRange!...x 单元格,而不是其位置引用本身。...创建一个新查询,进入【数据】选项卡,【获取数据】【来自文件】【从工作簿】。 【警告】 Power Query 不能从一个打开工作簿中读取数据。...该范围内每个空白单元格都将被填入 “null”。 在这里,将会注意到连接器已经连接到了 Excel 文件,导航到工作表中,然后提升了标题。这导致 A1 中成为标题,这并不是用户真正需要。...通过删除数据集中所有多余,重新设置 Excel 数据范围。如果这是一个由 Excel 中使用数据范围中额外单元格所引发问题,那么 “Column7” 将不再出现。

    16.5K20

    工作中必会57个Excel小技巧

    2、为文件添加作者信息 在该excel文件图标上右键单击 -属性 -摘要 -在作者栏中输入 3、让多人通过局域网共用excel文件 审阅 -共享工作簿 -在打开窗口上选中“允许多用户同时编辑...”...7、恢复未保护excel文件 文件 -最近所用文件 -点击“恢复未保存excel文件” 9、设置新建excel文件默认字体字号 文件 -选项 -常规 -新建工作簿时:设置字号字体 10、把A.xlsx...选取要隐藏工作表 -视图 -隐藏 5、让标题始终显示在最上面 视图 -冻结窗格 -冻结首 6、把窗口拆分成上下两部分,都可以上下翻看 选取要拆分位置 -视图 -拆分 7、调整excel工作表显示比例...按ctrl+滚轮 8、快速切换到另一个excel窗口 ctrl + tab键 9、全屏显示excel界面 视图 -全屏显示 三、单元格显示 1、隐藏0 文件 -选项 -高级 -去掉“在具有........”勾选 2、隐藏单元格内所有 ctrl+1打开单元格设置窗口 -数字 -自定义 -右边文框中输入三个分号;;; 3、隐藏编辑栏、灰色表格线、行号 视图 -显示 -去掉各项勾选 四、单元格选取

    4K30

    Excel催化剂开源第14波-VSTO开发之单元格区域转DataTable

    Excel开发过程中,大部分时候是Range单元格区域打交道,在VBA开发中,大家都知道一点是,不能动不动就去遍历所有单元格,那性能是非常糟糕,很多时候,是需要把整个单元格区域装入数组中再作处理...从单元格到DataTable,其实也就几句代码事情,当数据进入到DataTable后,可以使用许多数据库技术进行增删改查,特别是查询方面,遍历数据记录变得何等轻松,因其是结构化数据,访问某某行数据...同时在.Net世界中,有一猛药,谁用谁喜爱,用LINQ方法来访问数据,什么排序、筛选、去重,分组等等,会用SQL语句的人,都知道这叫怎样地一个方便。LINQ比SQL还要好用、易用好几倍。...throw new Exception("标题有空单元格,请检查引用区域首标题区域是否满足非空!")...结构,DataTable数据类型,有时保留Excel数据类型方便些,有时全部变为String类型方便些。

    1.6K20

    最全总结 | 聊聊 Python 办公自动化之 Excel(中)

    sheet.max_column 可以获取当前 Sheet 中数据行数数 def get_row_and_column_num(sheet): """ 获取sheet行数数...行数字索引、数字索引 比如:row_index=1,column_index=1 组成字符串索引 字符串索引:由字母组成 + 索引 比如:A1 对应第一、第一单元格 并且,openpyxl.utils...[]数据,可以使用下面的方式: def get_row_cells_by_index(sheet, row_index): """ 通过索引,获取某一单元格 :param...] return column_cells 需要注意是,获取某一数据需要传入数字索引;而对于数据获取,必须传入字符串索引 Python 列表范围取值类似,openpyxl 同样支持使用.../显示索引列表、索引列表 受限于篇幅,这里以获取所有显示/隐藏索引列表为例 遍历 Sheet 对象 row_dimensions 属性通过判断行属性 hidden ,判断当前行是否隐藏或显示

    1.5K30

    Java数据可视化:报表技术

    ,存储数据量较小; Excel2007 核心结构是 XML 类型结构,采用是基于 XML 压缩方式,使其占用空间更小,操作效率更高 2.2 常见Excel操作工具 Java中常见用来操作Excel...= workbook.createSheet(工作表名称, 工作表索引); 3、创建单元格 添加文本类单元格 Label labelC = new Label(索引, 索引, "单元格内容...最终目标就是读取每一数据,把数据转成用户对象,保存到表中 实现步骤:1、根据上传文件创建Workbook ​ 2、获取到第一个sheet工作表 ​ 3、从第二开始读取数据 ​ 4、读取每一个单元格...= null; Cell cell = null; //开始循环每行,获取每行单元格,放入到user属性中 for (int i = 1; i <= lastRowIndex...//合并单元格 起始行, 结束, 起始, 结束 sheet.addMergedRegion(new CellRangeAddress(0,0,0,4)); 3.设置高 /** 设置

    2.6K40

    报表技术

    ,存储数据量较小; Excel2007 核心结构是 XML 类型结构,采用是基于 XML 压缩方式,使其占用空间更小,操作效率更高 2.2 常见Excel操作工具 Java中常见用来操作Excel...= workbook.createSheet(工作表名称, 工作表索引); 3、创建单元格 添加文本类单元格 Label labelC = new Label(索引, 索引, "单元格内容...最终目标就是读取每一数据,把数据转成用户对象,保存到表中 实现步骤:1、根据上传文件创建Workbook ​ 2、获取到第一个sheet工作表 ​ 3、从第二开始读取数据 ​ 4、读取每一个单元格...= null; Cell cell = null; //开始循环每行,获取每行单元格,放入到user属性中 for (int i = 1; i <= lastRowIndex...//合并单元格 起始行, 结束, 起始, 结束 sheet.addMergedRegion(new CellRangeAddress(0,0,0,4)); 3.设置高 /** 设置

    2.6K30

    最全总结 | 聊聊 Python 办公自动化之 Excel(上)

    :', column_datas) 单元格可以通过索引、索引,调用 cell(row_index,column_index) 函数获取 需要注意是,索引索引都是从 0 开始,即:0 代表第一...date(日期) 4 -- boolean(布尔) 5 -- error(错误) # 获取某一个单元格数据 # 比如:获取第2第1单元格数据 one_cell = sheet.cell.... print("单元格数据类型为:", cell_type) 最后,如果要获取当前 Sheet 所有单元格数据,可以通过遍历所有来操作 # 获取所有单元格 print('表格中所有数据如下...sheet = wb.add_sheet(sheetname) 接着,通过 sheet 对象 write() 方法,按照索引索引,将数据写入到对应单元格中去 # 将数据写入到Sheet中 #...3个参数分别是:索引(从0开始)、索引(从0开始)、单元格 # 第一第一,写入一个数据 # 写入标题 for index, title in enumerate(self.titles):

    1.4K40

    C#进阶-用于Excel处理程序集

    首先,通过FileStream打开Excel文件,然后创建XSSFWorkbook对象表示整个工作簿,通过GetSheetAt(0)获取第一个工作表。...接下来,通过遍历每一每一个单元格,将单元格内容打印出来。...接着,创建行单元格,并通过SetCellValue方法设置单元格为"Hello""World"。最后,通过FileStream将工作簿写入到文件中。...通过Dimension属性,我们获取了工作表行数数。最后,我们使用两层循环遍历了每一每一个单元格,并通过Cells属性获取单元格对象,并输出了单元格。...首先,我们创建了一个Workbook对象,并通过LoadFromFile方法加载了名为"example.xlsx"Excel文件。然后,我们获取了第一个工作表,并分别获取了行数数。

    12210
    领券