C# 使用c从excel工作表中获取基于行中上一个单元格值的其他单元格值#
我正在尝试使用OpenXMLSDK从excel工作表中读取数据,我在excel工作表中有列结构,如下图所示 当C# 使用c从excel工作表中获取基于行中上一个单元格值的其他单元格值#,c#,.net,excel,.net-core,openxml,C#,.net,Excel,.net Core,Openxml,我正在尝试使用OpenXMLSDK从excel工作表中读取数据,我在excel工作表中有列结构,如下图所示 当国家为美国时,我需要获取单元格站和WMO#的值,并且我在excel表中确实有国家美国的数据,但无法确定如何获取数据 我使用下面的代码来获取数据 string filePath = @"C:\data.xlsx"; using FileStream fs = new FileStream(filePath, FileMode.Open,
国家
为美国
时,我需要获取单元格站
和WMO#
的值,并且我在excel表中确实有国家美国的数据,但无法确定如何获取数据
我使用下面的代码来获取数据
string filePath = @"C:\data.xlsx";
using FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using SpreadsheetDocument doc = SpreadsheetDocument.Open(fs, false);
WorkbookPart workbookPart = doc.WorkbookPart;
SharedStringTablePart sstpart = workbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringTable sst = sstpart.SharedStringTable;
Sheet firstSheet = workbookPart.Workbook.Descendants<Sheet>().First();
Worksheet sheet = ((WorksheetPart)workbookPart.GetPartById(firstSheet.Id)).Worksheet;
var cells = sheet.Descendants<Cell>();
var rows = sheet.Descendants<Row>();
foreach (Row row in rows.Skip(5))
{
int cellCount = 0;
foreach (Cell c in row.Elements<Cell>())
{
string stringValue = "";
if ((c.DataType != null) && (c.DataType == CellValues.SharedString))
{
int ssid = int.Parse(c.CellValue.Text);
stringValue = sst.ChildElements[ssid].InnerText;
}
else if (c.CellValue != null)
{
stringValue = c.CellValue.Text;
}
cellCount++;
Console.WriteLine("Cell Number:"+ cellCount + "CellValue:" + stringValue);
}
}
stringfilepath=@“C:\data.xlsx”;
使用FileStream fs=newfilestream(filePath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
使用SpreadsheetDocument doc=SpreadsheetDocument.Open(fs,false);
WorkbookPart WorkbookPart=doc.WorkbookPart;
SharedStringTablePart sstpart=workbookPart.GetPartSoftType().First();
SharedStringTable sst=sstpart.SharedStringTable;
Sheet firstSheet=workbookPart.Workbook.subjects().First();
工作表工作表=((WorksheetPart)workbookPart.GetPartById(firstSheet.Id)).Worksheet;
var cells=sheet.subjections();
var rows=sheet.subjections();
foreach(一行一行跳过(5))
{
int-cellCount=0;
foreach(行.Elements()中的单元格c)
{
字符串stringValue=“”;
if((c.DataType!=null)&&(c.DataType==CellValues.SharedString))
{
int ssid=int.Parse(c.CellValue.Text);
stringValue=sst.ChildElements[ssid].InnerText;
}
else if(c.CellValue!=null)
{
stringValue=c.CellValue.Text;
}
cellCount++;
Console.WriteLine(“单元号:+cellCount+”单元值:+stringValue”);
}
}
如果国家是USA
,我只需要获取一行中剩余的单元格数据,我将使用openxml库来实现这一点
有人能告诉我如何才能做到这一点吗
提前谢谢。有人能告诉我目前的方法还有什么其他方法或建议吗?我自己也在学习C#,但在我看来,如果这个基本循环有效的话,你就接近了。您只需要将usa的逻辑检查添加为cellvalue,然后将剩余的单元格存储在某种结构中。