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

有没有一种方法可以使用OpenXml从列中获取最后填充的行单元格值

是的,可以使用OpenXml从列中获取最后填充的行单元格值。OpenXml是一种用于处理Office文档的开放式标准,可以通过编程方式读取、创建和修改Word、Excel和PowerPoint等文件。

要从列中获取最后填充的行单元格值,可以按照以下步骤进行操作:

  1. 打开Excel文件:使用OpenXml SDK库中的SpreadsheetDocument.Open方法打开Excel文件。
  2. 获取工作表:通过SpreadsheetDocument.WorkbookPart属性获取工作簿部分,然后使用WorkbookPart.Workbook.Sheets属性获取工作表集合。
  3. 遍历工作表:遍历工作表集合,找到目标工作表。
  4. 获取行集合:通过工作表的WorksheetPart.Worksheet.GetFirstChild<SheetData>()方法获取行集合。
  5. 遍历行集合:遍历行集合,找到最后填充的行。
  6. 获取单元格集合:通过行的Row.Elements<Cell>()方法获取单元格集合。
  7. 获取最后填充的单元格:遍历单元格集合,找到最后填充的单元格。
  8. 获取单元格值:通过单元格的Cell.CellValue属性获取单元格的值。

以下是一个示例代码,演示如何使用OpenXml获取最后填充的行单元格值:

代码语言:txt
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

public string GetLastCellValue(string filePath, string sheetName, string columnName)
{
    string cellValue = null;

    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, false))
    {
        WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
        WorksheetPart worksheetPart = workbookPart.WorksheetParts.FirstOrDefault(wp => wp.Worksheet.Name == sheetName);

        if (worksheetPart != null)
        {
            SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
            Row lastRow = sheetData.Elements<Row>().LastOrDefault();

            if (lastRow != null)
            {
                Cell targetCell = lastRow.Elements<Cell>().FirstOrDefault(c => GetColumnName(c.CellReference.Value) == columnName);

                if (targetCell != null)
                {
                    cellValue = GetCellValue(targetCell, workbookPart);
                }
            }
        }
    }

    return cellValue;
}

private string GetCellValue(Cell cell, WorkbookPart workbookPart)
{
    string cellValue = null;

    if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
    {
        SharedStringTablePart sharedStringPart = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();

        if (sharedStringPart != null)
        {
            SharedStringItem sharedStringItem = sharedStringPart.SharedStringTable.ElementAt(int.Parse(cell.CellValue.Text));
            cellValue = sharedStringItem.Text.Text;
        }
    }
    else
    {
        cellValue = cell.CellValue.Text;
    }

    return cellValue;
}

private string GetColumnName(string cellReference)
{
    string columnName = "";

    foreach (char c in cellReference)
    {
        if (Char.IsLetter(c))
        {
            columnName += c;
        }
        else
        {
            break;
        }
    }

    return columnName;
}

这个方法可以用于读取Excel文件中指定工作表、指定列的最后填充的行单元格的值。你可以根据需要将其集成到你的应用程序中。

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

请注意,以上产品和链接仅作为示例,你可以根据实际需求选择适合的腾讯云产品。

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

相关·内容

根据标准word模板生成word文档类库(开源)

类库操作ooxml方面使用OpenXML SDK,所以需要.framework 3.0及以上版本支持。   今天贴上来是第二版,第一版做得太粗糙了就不贴了,虽然第二版仍存在很多待改进地方。...2.填充域作为段落时可填充文本、图片和表格,还可以通过AddContentLine方法填充文本和图片后换行; 3.表格单元格时可填充文本、图片,还可以通过单元格CellInfo对象AddContentLine...)Tbl属性(类型为TblStructureInfo)表示表格单元格类型填充域对象(默认为null代表该填充域非表格单元格类型),可通过Tbl[rowIndex,cellIndex]方式获取表格单元格...RowStructureInfo: 表格单元格类型填充表格类 属性如下: Index: 该行在模板表格索引(只读) Cells: 单元格集合 方法如下: AddCell: 添加单元格...CellStructureInfo: 表格单元格类型填充单元格类 属性如下: Index: wordML索引(大于或等于该单元格实体在行实体索引)(只读) ColSpan

2.4K60

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

Net传统Office操作方法(比如OleDB,OWC之类),有几大缺点: 一是不通用(仅能处理微软Office,不能与其它非Windows平台交换数据), 二是性能差(导出一个Excel,如果记录数上万条...FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0 安装完以后,就能直接使用了,下面的代码演示了,如何创建一个Excel文档,并创建一个工作表"博客园",最后在该工作表单元格...A1插入字符串 using System; using System.IO; using System.Linq; using System.Windows.Forms; using DocumentFormat.OpenXml...http://www.cnblogs.com/yjmyzz", shareStringPart); //设置单元格"" cell.DataType...,类似:"A3"或"B5" //如果指定存在,则直接返回该行,否则插入新 Row row; if (sheetData.Elements

2.6K100

Npoi导入导出Excel操作

之前公司一个物流商系统需要实现对订单批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求。...POI是一个开源Java读写Excel、WORD等微软OLE2组件文档项目, 使用 NPOI 你就可以在没有安装 Office 或者相应环境机器上对 WORD/EXCEL 文档进行读写。...使用NPOI优势 1、您可以完全免费使用该框架 2、包含了大部分EXCEL特性(单元格样式、数据格式、公式等等) 3、专业技术支持服务(24*7全天候) (非免费) 4、支持处理文件格式包括xls...} catch { return "导入失败"; } } 第一种方法是默认文件第一是列名...导出Excel并且下载     思路是用NPOI创建文件存放在服务器上然后返回URL开始下载,借助一些方法可以方便进行以下操作 利用反射获得实体所有属性(一个表所有): /// <summary

4.4K111

Npoi导入导出Excel操作

之前公司一个物流商系统需要实现对订单批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求。...POI是一个开源Java读写Excel、WORD等微软OLE2组件文档项目, 使用 NPOI 你就可以在没有安装 Office 或者相应环境机器上对 WORD/EXCEL 文档进行读写。...使用NPOI优势 1、您可以完全免费使用该框架 2、包含了大部分EXCEL特性(单元格样式、数据格式、公式等等) 3、专业技术支持服务(24*7全天候) (非免费) 4、支持处理文件格式包括xls...} catch { return "导入失败"; } } 第一种方法是默认文件第一是列名...导出Excel并且下载     思路是用NPOI创建文件存放在服务器上然后返回URL开始下载,借助一些方法可以方便进行以下操作 利用反射获得实体所有属性(一个表所有): /// <summary

3.5K50

使用 EasyPOI 优雅导出Excel模板数据(含图片)

list 自定义名称,表示表达式数据集合,由代码以list为键,Map获取集合。 list这个名字容易理解,就是一个占位符,可以随便取。...EasyPOI导出图片有两种方式,一种是通过图片Url,还有一种获取图片byte[],毕竟图片本质就是byte[]。...EasyPOI源码是根据该单元格跨度来决定list每个元素需要多少。比如上述图片中,该单元格跨度是51,也就是说,以后list每个元素都会占用5。...比如说第一有10个单元格,第二只用了前5个,那么不能直接在第5个结束直接写换行符]],而是需要把6-10个单元格合并,然后写入]]。参考上述图片中生产日期所在行最后。...这么设置原因是EasyPOI要求每行单元格数目完全一致,因为源码判断了每个单元格跨度,如果提前使用了]]换行符,那么该数目就和其他不同,那么赋值时候就乱掉了,会出现索引异常。

7.5K21

VBA专题11:详解UsedRange属性

使用UsedRange属性,可以方便地找到工作表使用第一、第一最后最后,统计已使用区域行列数以用于循环处理,等等。...图1 从上图1可以看到,VBA尝试使用电子表格上数据来计算第一个单元格最后一个单元格,并选择该区域范围内所有内容。...正如刚刚所演示那样,UsedRange属性总是产生一个矩形区域,最左上角单元格开始,直到最下面的和最右边。...应用4:找到工作表已使用区域最后最后 使用下面的代码,获取工作表已使用区域最后最后: Dim rng As Range Dim firstRow As Long, lastRow...找到工作表已使用区域最后最后后,就可以知道其最后一个单元格了。

7.2K32

openpyxl

属性 获取存在数据最小一索引 ws.max_column 属性 获取存在数据最大一索引 ws.min_column 属性 获取存在数据最小一索引...ws.insert_rows(i,n) 方法 第i插入n(包括i),默认一 ws.insert_cols(j,n) 方法 第j插入n(包括j),默认一 ws.delete_rows...(i,n) 方法 第i删除n(包括i),默认一 ws.delete_cols(j,n) 方法 第j删除n(包括j),默认一 wb.copy_worksheet('...参数:最小,最大,最小,最大行,是否只返回 # 返回第1,2,3,4所有 cells = ws.iter_rows(1, 2, 3, 4,True) 单元格使用ws['A1...'].value获取A1 使用ws['A2': 'B3'].values获取A2到B3,每行为一个元组 单元格属性: cell.row 单元格索引 cell.column

26920

dotnet OpenXML 解析 PPT 图表 面积图入门

本文告诉大家如何使用 OpenXML 解析 PPT 图表,以面积图为入门例子告诉大家 OpenXML 存储 在 PPT 里面,有强大图表功能,可以联动 Excel 展示数据。...对于默认面积图来说,纵坐标属于一个运行时属性,不会存放在 OpenXML 文档里面,需要根据每个系列数值最大和最小以及配置,计算出来纵坐标的内容,本文不会涉及具体坐标轴计算方法 数据系列...; // 这个公式表示是 Excel 哪个数据获取获取方式比较复杂。...不同系列可以有不同填充 接下来获取图表最核心内容,系列数据 在 PPT 里面,是允许数据为空,如果是空,行为就是不绘制系列内容。...其中类别轴上数据只有第零个系列有用,但是在 OpenXML 里每个系列都重复存放一份 在图表里存放数据使用是引用,可以用公式读取 Excel 数据,也可以使用缓存。

87430

针对SAS用户:Python数据分析库pandas

可以认为Series是一个索引、一维数组、类似一可以认为DataFrames是包含二维数组索引。好比Excel单元格和列位置寻址。...检查 pandas有用于检查数据方法。DataFrame.head()方法默认显示前5。.tail()方法默认显示最后5计数值可以是任意整数值,如: ?...解决缺失数据分析典型SAS编程方法是,编写一个程序使用计数器变量遍历所有,并使用IF/THEN测试缺失。 这可以沿着下面的输出单元格示例行。...PROC MI在这些示例范围之外。 .fillna(method="ffill")是一种“前向”填充方法。 NaN被上面的“下”替换为相邻单元格。...下面的单元格将上面创建DataFrame df2与使用“前向”填充方法创建数据框架df9进行对比。 ? ? 类似地,.fillna(bfill)是一种“后向”填充方法

12.1K20

dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见额外版权信息

本文告诉大家如何利用 Office 对于 OpenXML 支持特性,在 PPT 表格里面,通过合并单元格存放一些额外信息,这些信息对用户来说是不可见,但是进行拷贝表格等时候,可以保存此信息内容...在开始之前,期望大家已了解很多 OpenXML 知识,详细请看 Office 使用 OpenXML SDK 解析文档博客目录 在 PPT 表格里面,采用了 RowSpan 用来表示单元格跨行,对应在下一单元格将会被标记...例如我对第一第一个单元格设置合并单元格,合并行,那么在第二第一单元格将被标记 vMerge="1" 表示被合并,如下面表格 在 Office 读取 OpenXML 文档,将无视 vMerge...="1" 存在,也就是此属性只是给开发者看而已,无论是否存在都不会影响到单元格合并 但事实上,依然可以在标记了 vMerge="1" 单元格上面添加内容,例如以下有删减 OpenXML 文档...本文以上测试文件和代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文代码

94710

看到基础动态规划就像回到家一样!

、dp[0][m-1]。 这些是什么意思呢? dp[0][i] 表示左上角开始,到达单元格(0 ,i)可以拿到最大价值,就是一路向下拿单元格礼物操作。...for(int i = 1 ; i < col ; i++){ // 所以对于只有一情况,当前位置最优解等于前一最优解加上该 dp[0][i] = dp[0][i-1...][0] + grid[j][0]; } 基于上面的初始化操作,我们 dp 数组也就填充完毕了,而 dp 数组最后一个就是我们最终答案。...grid[0][0]; // i 1 遍历到 n - 1 // 获取第 0 第 i 最优解 // 由于每次只能向下或者向右移动一步,此时只能向右移动一步...dp[0][i] = dp[0][i-1] + grid[0][i]; } // j 1 遍历到 n - 1 // 获取第 j 第 0 最优解

35010

Python 可以写 Excel “Vlookup” 函数?太牛逼了吧!

但是你可能会注意到,Excel一旦数据量过大,打开都费劲了,何况打开后,你还要输入公式计算,就更费劲了,此时你有没有想到过被称作“万金油”Python,他好像啥都可以做,是不是很牛逼?...接着,在G2单元格我们写了一个vlookup公式,E2表示每一个待查找,K1:L5表示待查找区域,我们使用F3快捷键将这个区域变为了绝对引用,因为我们查找区域就是这一个固定范围,2表示待返回在查找区域中所在数...最后使用填充柄下拉填充即可。 Python中使用Vlookup函数 在Python利用openpyxl库,就可以完成公式填充。...然后,使用workbook["Sheet1"]激活该工作簿Sheet1表,表示我们要针对这个表进行操作。完成上述操作后,下面就可以进行vlookup公式填写了。...首先,我们利用sheet["G1"] = "名称"给G1单元格增加了一个表头。然后写了一个循环,循环第2最后,针对每一个G单元格,我们写入上述vlookup公式。最后记得保存一下即可。

2.3K20

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

本文,我将使用NPOI、EPPlus、OpenXML、Aspose.Cells四个市面上常见库,各完成一个导出Excel示例。然后对其代码风格和性能做一个横向比较。最后我将说出我自己感想。...在我性能测试函数使用了如下两个函数来测试内存占用: GC.GetTotalAllocatedBytes(true) 获取分配内存大小 GC.GetTotalMemory(true) 获取占用内存大小...通过调用Measure函数,可以测得传入action耗时和内存占用。默认会调用5次,可以5次测试结果取出能反映性能。...但此示例共享变量值收益很低,但会极大地增加代码复杂性(普通用户可能很难写出),因此本示例未使用SharedStringTable; 它基于单元格位置标识,如B3(第三第二),因此索引方式比EPPlus.../NPOI都要复杂; 代码示例中使用'A' + i - 1来计算位置标识,因此这个示例不能用于超过26(字母数)数据; 代码使用LINQ(而不是循环)来枚举所有/可以让代码在已经非常复杂情况下

4.6K10

C++ Qt开发:TableWidget表格组件

如果需要设置垂直表头,可以使用 setVerticalHeaderLabels 方法,将一个包含标签字符串列表传递给它。 可以通过循环设置表头每个单元格属性。...以下是关于该代码一些解释: 通过 ui->spinBox->value() 读取 QSpinBox ,即用户选择数量。 使用 setRowCount 方法将读取到数量设置为表格行数。...获取每个单元格 QTableWidgetItem。 使用 cellItem->text() 获取单元格文本内容。 将每文本内容连接为一字符串。...党员状态处理: 获取最后(党员状态 QTableWidgetItem。 使用 cellItem->checkState() 判断复选框状态,根据状态判断是否为党员。...通过这样处理,文本框中会显示表格内容,每一包含每个单元格文本内容,最后显示党员状态。

44010

条件格式特殊用法——创意百分比构成图

先选中一或者一,设置好宽,然后点击格式化,用格式刷选区相邻9,然后就会出现10相同区域。 ? ? ? 同样方法设置同高最后组成一个十单元格区域。 ?...在10*10单元格区域中,以左下角为始输入0.01~1100个数字。(需要使用序列自动填充功能) 在左上角四个单元格顺序输入0.91、0.92、0.81、0.82。然后顺序将前两向下填充。...在格式菜单中选择填充颜色——颜色选择第一第五个颜色,然后确定就完成了第一个填充设置。 ? 然后点击新增规则,与刚才设置步骤一样,单元格小于等于E7(或67%) ? ?...规则填充颜色依次是填充菜单第一5、6、7、8、9个颜色(倒序也可以,但是必须是第五个以后颜色) ? 最后完成效果是这样。...单元格数字需要隐藏(选中所有数字单元格,在设置单元格格式,输入“;;;”,就可以隐藏掉所有数字) ? ? 然后可以通过更换软件主题颜色,改变单元格填充色。丰富多彩配色就立马出来了。 ?

1.4K60

datatables应用程序接口API

DataTables 提供可以操作表格数据API,有下面六个关键部分: 表格(tables) (Columns) (Rows) 单元格(Cells) 核心方法(Core) 工具类(Utilities...jQuery实例(如果是这个方式初始化Datatables,那么返回对象不能使用api方法,不然会报方法未定义) 核心(Core) 名称 说明 ajax.reload()API 重新加载数据源获取数据...(完成)一个 jQuery 选择器操作 ajax.json()API 获得最终json数据 ajax.params()API 获取最后一次Ajax请求提交参数 ajaxAPI ajax方法命名空间...cells()DT 表格中选择多个单元格 (Columns) 名称 说明 column().cache()DT 从缓存数据里获取选中 column().data()DT 获取选中单元格...(没理解) filter()DT 结果集中过滤 flatten()DT 把一或者几列数据二维数组变成一维数组 indexOf()DT 结果集中找匹配,返回找到个数 iterator()DT

4.4K30

VLOOKUP很难理解?或许你就差这一个神器

table_array (必需)VLOOKUP 在其中搜索lookup_value 和返回单元格区域。可以使用命名区域或表,并且可以使用参数名称而不是单元格引用。...这是未指定默认方法。例如,=VLOOKUP (90,A1:B100,2,TRUE)。完全匹配 - 0/FALSE 搜索第一的确切。...这样就可以通过数值控制按钮动态演示VLOOKUP查找函数查找原理了。 Excel自动填充颜色 以上已经完成了本次动态图解主体内容了,最后再加上颜色突出演示,那就是锦上添花,一目了然了。...可以关注公众号并回复【VLOOKUP动态图解】获取文件。 ? 利用数据验证设置下拉选项 除了使用数值控制钮选择目标查找,还可以通过设置下拉选框选择目标查找。...另外还有一种方法,配合使用IF函数。即VLOOKUP反向查找。

8K60

数据人必会Excel|掌握32个Excel小技巧,成为效率达人(一)

技巧一:快速选择至最边缘 作为数据分析师,有时候我们拿到数据可能有成百上千或者成百上千,如果我们想要选中这成百上千数据一部分进行处理,常规方法是拖动鼠标进行框选,但对于数据量大情况这种方法不一定好...方法: 对于Ctrl+Shift+D和Ctrl+Shift+R来说,我们先在第一个单元格写上需要填充内容,其次选中需要填充区域,最后按下Ctrl+Shift+D或Ctrl+Shift+R快捷键向下或向右填充...而对于Ctrl+Enter来说,操作方法略有不同,我们需要先选中要填充区域,然后在编辑栏输入需要填充内容,最后按下快捷键Ctrl+Enter,完成批量填充。...首先,我们先在薪资这一写上对应数字,然后选中所有想要填充,选择[数据]菜单,点击[快速分列]选项卡,就能够完成拆分。拆分单位也可以用同样方法实现。 ?...如有疑问,可以关注视频号:数据万花筒,有详细讲解哦! ? 技巧十六:快速互换两互换可是使用复制粘贴实现,但这种方法并不是最简便

1.7K20

Python替代Excel Vba系列(三):pandas处理不规范数据

如下图: 其中表格第3是班级。诸如"一1",表示是一年级1班,最多8个年级。 表格1至3,分别表示"星期"、"上下午"、"第几节课"。 前2有大量合并单元格,并且数据量不一致。...如下: 为了管理方便,下面会把每个环节处理放入一个独立方法 ---- 加载数据 代码如下: 由于这次标题是第3开始,因此 wrk.range('a3').current_region...ffill 表示用上一个有效填充。 合并单元格很多时候就是第一个有,其他为空,ffill 填充方式刚好适合这样情况。 ---- 现在数据美如画了。...pandas 通过 stack 方法可以把需要索引转成行索引。 用上面的数据作为例子,我们需要左边索引显示每天上下午气温和降雨量。....stack() ,stack 方法默认把最后索引区域最后一个索引,移到索引区域最后。由于目前 df 只有一个索引,因此直接调用 stack 即可。

5K30
领券