【问题标题】:excel xlsx file parsing - using koograexcel xlsx文件解析——使用koogra
【发布时间】:2012-11-16 11:59:21
【问题描述】:

在使用 git hub 尝试了几个包之后,并尝试解析/处理这个相当大的 excel 文档。 我尝试的每一种方法都会在out of memory 上抛出异常。

我在谷歌 ing 又发现了这个名为 koogra 的 GNU 库,这似乎是我认为适合这项工作的唯一一个,不能打扰太多并继续搜索我已经没有时间完成这部分项目了。

我现在得到的代码正在通过“内存不足”问题的部分,

所以剩下的就是如何正确解析 Excel 文档,以便可以提取说一种字典集合键是一列,值是另一列。

this is the file in question

这是我目前的代码

var path = Path.Combine(Environment.CurrentDirectory, "tst.xlsx");
Net.SourceForge.Koogra.Excel2007.Workbook xcel = new Net.SourceForge.Koogra.Excel2007.Workbook(path);
var ss = xcel.GetWorksheets();

【问题讨论】:

    标签: c# excel .net-4.0 xml-parsing text-parsing


    【解决方案1】:

    被更多人找到了.... google ing... 2007 年使用的第一行 (xlsx)

    第二行是xls版本

            Net.SourceForge.Koogra.IWorkbook genericWB = Net.SourceForge.Koogra.WorkbookFactory.GetExcel2007Reader("tst.xlsx");
    
            //genericWB = Net.SourceForge.Koogra.WorkbookFactory.GetExcelBIFFReader("some.xls");
    
            Net.SourceForge.Koogra.IWorksheet genericWS = genericWB.Worksheets.GetWorksheetByIndex(0);
    
            for (uint r = genericWS.FirstRow; r <= genericWS.LastRow; ++r)
            {
                Net.SourceForge.Koogra.IRow row = genericWS.Rows.GetRow(r);
    
                for (uint c = genericWS.FirstCol; c <= genericWS.LastCol; ++c)
                {
                    // raw value
                    Console.WriteLine(row.GetCell(c).Value);
    
                    // formatted value
                    Console.WriteLine(row.GetCell(c).GetFormattedValue());
                }
            }
    

    我希望我能帮助遇到同样“内存不足”问题的其他人......' 享受

    对上述代码的小更新

    好的..我玩过这个,只要它与文件的内容有关 图表根据Unique IP排名,当前代码为

                //place source file within your current:
                //project directory\bin\debug and you should find extracted file next to the source file 
                var pathtoRead = Path.Combine(Environment.CurrentDirectory, "tst.xlsx");
                var pathtoWrite = Path.Combine(Environment.CurrentDirectory, "tst.txt");
    
                Net.SourceForge.Koogra.IWorkbook genericWB = Net.SourceForge.Koogra.WorkbookFactory.GetExcel2007Reader(pathtoRead);
                Net.SourceForge.Koogra.IWorksheet genericWS = genericWB.Worksheets.GetWorksheetByIndex(0);
                StringBuilder SbXls = new StringBuilder();
                for (uint r = genericWS.FirstRow; r <= genericWS.LastRow; ++r)
                {
                    Net.SourceForge.Koogra.IRow row = genericWS.Rows.GetRow(r);
                    string LineEnding = string.Empty;
                    for (uint ColCount = genericWS.FirstCol; ColCount <= genericWS.LastCol; ++ColCount)
                    {
    
                        var formated = row.GetCell(ColCount).GetFormattedValue();
                        if (ColCount == 1)
                            LineEnding = Environment.NewLine;
                        else if (ColCount == 0)
                            LineEnding = "\t";
                        if (ColCount > 1 == false)
                            SbXls.Append(string.Concat(formated, LineEnding));
                    }
                }
                File.WriteAllText(pathtoWrite, SbXls.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多