C# OpenXML-InnerText始终是整数而不是字符串
当我从OpenXML读取单元格值时,得到的单元格InnerText总是整数C# OpenXML-InnerText始终是整数而不是字符串,c#,excel,openxml,C#,Excel,Openxml,当我从OpenXML读取单元格值时,得到的单元格InnerText总是整数 using (SpreadsheetDocument document = SpreadsheetDocument.Open(INPUT_DIRECTORY, false)) { WorkbookPart wbPart = document.WorkbookPart; foreach (Sheet sheet in wbPart.W
using (SpreadsheetDocument document = SpreadsheetDocument.Open(INPUT_DIRECTORY, false))
{
WorkbookPart wbPart = document.WorkbookPart;
foreach (Sheet sheet in wbPart.Workbook.Sheets)
{
switch (sheet.Name.ToString())
{
case "ABC":
WorksheetPart wsPart = (WorksheetPart)wbPart.GetPartById(sheet.Id);
SheetData sheetdata = wsPart.Worksheet.Elements<SheetData>().FirstOrDefault();
foreach (Row r in sheetdata.Elements<Row>())
{
string xxx = r.Elements<Cell>().ElementAt(0).InnerText;
string yyy = r.Elements<Cell>().ElementAt(6).InnerText;
string zzz = r.Elements<Cell>().ElementAt(12).InnerText;
}
break;
}
}
}
使用(电子表格文档=电子表格文档.打开(输入目录,false))
{
WorkbookPart wbPart=document.WorkbookPart;
foreach(wbPart.工作簿.Sheets中的工作表)
{
开关(sheet.Name.ToString())
{
案例“ABC”:
工作表部件wsPart=(工作表部件)wbPart.GetPartById(sheet.Id);
SheetData SheetData=wsPart.sheet.Elements().FirstOrDefault();
foreach(sheetdata.Elements()中的r行)
{
字符串xxx=r.Elements().ElementAt(0).InnerText;
字符串yyy=r.Elements().ElementAt(6).InnerText;
字符串zzz=r.Elements().ElementAt(12).InnerText;
}
打破
}
}
}
xxx、yyy、zzz始终为整数,即使它是带值的字符串。尝试以下操作:
using (SpreadsheetDocument document = SpreadsheetDocument.Open(INPUT_DIRECTORY, false))
{
WorkbookPart wbPart = document.WorkbookPart;
foreach (Sheet sheet in wbPart.Workbook.Sheets)
{
switch (sheet.Name.ToString())
{
case "ABC":
WorksheetPart wsPart = (WorksheetPart)wbPart.GetPartById(sheet.Id);
SheetData sheetdata = wsPart.Worksheet.Elements<SheetData>().FirstOrDefault();
foreach (Row r in sheetdata.Elements<Row>())
{
string xxx = r.Elements<Cell>().ElementAt(0).InlineString.Text.Text;
string yyy = r.Elements<Cell>().ElementAt(6).InlineString.Text.Text;
string zzz = r.Elements<Cell>().ElementAt(12).InlineString.Text.Text;
}
break;
}
}
}
使用(电子表格文档=电子表格文档.打开(输入目录,false))
{
WorkbookPart wbPart=document.WorkbookPart;
foreach(wbPart.工作簿.Sheets中的工作表)
{
开关(sheet.Name.ToString())
{
案例“ABC”:
工作表部件wsPart=(工作表部件)wbPart.GetPartById(sheet.Id);
SheetData SheetData=wsPart.sheet.Elements().FirstOrDefault();
foreach(sheetdata.Elements()中的r行)
{
字符串xxx=r.Elements().ElementAt(0).InlineString.Text.Text;
字符串yyy=r.Elements().ElementAt(6).InlineString.Text.Text;
string zzz=r.Elements().ElementAt(12).InlineString.Text.Text;
}
打破
}
}
}
这可能是因为您需要访问。并展示了一种处理方法
基本上,您需要从工作簿中获取字符串表:
SharedStringTablePart sstpart = workbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringTable sst = sstpart.SharedStringTable;
if ((cell.DataType != null) && (cell.DataType == CellValues.SharedString))
{
int ssid = int.Parse(cell.CellValue.Text);
string str = sst.ChildElements[ssid].InnerText;
Console.WriteLine("Shared string {0}: {1}", ssid, str);
}
else if (cell.CellValue != null)
{
Console.WriteLine("Cell contents: {0}", cell.CellValue.Text);
}