栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从excel文件中打开xml读取

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从excel文件中打开xml读取

您的方法对我来说似乎行得通-因为它确实“进入了循环”。不过,您也可以尝试以下操作:

void Main(){    string fileName = @"c:pathtomyfile.xlsx";    using (FileStream fs = new FileStream(fileName, 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; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); Worksheet sheet = worksheetPart.Worksheet; var cells = sheet.Descendants<Cell>(); var rows = sheet.Descendants<Row>(); Console.WriteLine("Row count = {0}", rows.LongCount()); Console.WriteLine("Cell count = {0}", cells.LongCount()); // One way: go through each cell in the sheet foreach (Cell cell in cells) {     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);     }  }  // Or... via each row  foreach (Row row in rows)  {      foreach (Cell c in row.Elements<Cell>())      {          if ((c.DataType != null) && (c.DataType ==CellValues.SharedString))          {   int ssid = int.Parse(c.CellValue.Text);   string str = sst.ChildElements[ssid].InnerText;   Console.WriteLine("Shared string {0}: {1}", ssid, str);          }          else if (c.CellValue != null)          {   Console.WriteLine("Cell contents: {0}", c.CellValue.Text);          }      }  }         }     } }

我使用文件流方法来打开工作簿,因为它允许您使用共享访问权限来打开它-
这样您就可以同时在Excel中打开工作簿。如果工作簿在其他位置打开,则Spreadsheet.Open(…方法将不起作用。

也许这就是为什么您的代码无法正常工作的原因。

还要注意,在适当的地方使用SharedStringTable来获取单元格文本。

编辑2018-07-11:

由于该帖子仍在获得投票,我还应该指出,在许多情况下,使用ClosedXML操作/阅读/编辑工作簿可能会容易得多。这些文档示例非常易于使用,根据我的有限经验,编码非常简单。请注意,它尚未(尚未)实现可能是或不是问题的所有Excel函数(例如INDEX和MATCH)。[不是我想无论如何都要尝试处理OpenXML中的INDEX和MATCH。]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号