Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenXML-InnerText始终是整数而不是字符串_C#_Excel_Openxml - Fatal编程技术网

C# 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

当我从OpenXML读取单元格值时,得到的单元格InnerText总是整数

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);
}