c# - C#从excel标题第一行存储命名范围
问题描述
我是使用 excel 的 C# 新手。我有一个 excel 文件,需要遍历每一列的第一行并将该列的值存储为该列地址的 excel 命名范围。到目前为止,我有以下内容:
var fileinfo = new FileInfo(path);
if (fileinfo.Exists)
{
using (ExcelPackage p = new ExcelPackage(fileinfo))
{
var worksheet = p.Workbook.Worksheets[1];
int iRowCnt = worksheet.Dimension.End.Row;
int iColCnt = worksheet.Dimension.End.Column;
for (int i=1; i <= iColCnt; i++ )
{
}
}
}
注意每列值是我想在excel中存储为命名范围的标题
解决方案
我假设您使用的是 epplus 包。这是我用来将 Excel 文档转换为数据表的代码。
public static DataTable LoadFromStreamExcel(String _path, bool _has_header)
{
DataTable _datatable = new DataTable();
var fileinfo = new FileInfo(_path);
using (ExcelPackage pack = new ExcelPackage(fileinfo))
{
ExcelWorksheet ws = pack.Workbook.Worksheets.First();
foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
{
_datatable.Columns.Add(_has_header ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = _has_header ? 2 : 1;
for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
DataRow row = _datatable.Rows.Add();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Value;
}
}
}
return _datatable;
}
推荐阅读
- jquery - 用jquery用ID替换表中的特定数据
- recursion - MIPS 在哪里将递归调用放在回文问题中
- arrays - 试图从角度数组中获取唯一的对象列表
- postgresql - 如何将 900MB 的 csv 文件从网站上传到 postgresql
- python - 输入超出范围的数字时,python 没有给我正确的答案
- java - 基于主要选项的 Picocli 所需选项选择
- python - Python中的Z3计数器变量数组
- c - 添加元素链表
- javascript - 如何在反应中使用带有 cytoscape 的变量输入来更改节点的颜色
- javascript - Array to Newline String 通过 HTML 再次到 Array