解析Excel文件和读取单元(Parsing an excel file and reading a

2019-06-25 12:22发布

我有一个excel文件。 我已经上传截图。 我需要写一个.NET应用程序(控制台应用程序)来解析excel文件。 你可以看到标题为“功能名”的小区。 我的.NET应用程序应该找到特定的细胞和读取该列中的内容,如模板,InstanceFromTemplate,任务等。 如果它读取任务,它应该调用像任务的CreateTask功能(); 如果它读取InstanceFromTemplate,它应该调用像TaskInstanceFromTemplate InstanceFromTemplate功能();

我写的代码为这些功能。 我只需要帮助就如何解析excel表,去那个特定的列,读包含列下函数名的细胞,并调用适当的功能。 任何帮助,将不胜感激。

算法是像

  1. 打开Excel文件
  2. 搜索标题单元格题为功能名称
  3. 读头单元格下的第一小区
  4. 如果第一个单元格中读取,调用函数(代码GetAllTemplate功能已经有了)只需要调用它AFTE找到它
  5. 如果第二电池,通话功能。
  6. 到达头细胞功能的名称下最后一个单元格。 因此,退出

Answer 1:

基于什么你正在尝试做的,你真的应该使用LINQ Ecxel插件的描述,我认为它简单的方法来解决你的问题

http://code.google.com/p/linqtoexcel/



Answer 2:

我强烈建议使用像一个图书馆的Excel数据读取器 ,并与托管代码中的数据。 这个名为CodePlex网站有做你需要什么的一个很好的例子。



Answer 3:

这里有教程,应该让你开始了一把:

http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm



Answer 4:

使用Excel互操作,你可以这样来做。 我假定函数名指向在Excel工作簿中定义的功能,否则你必须改变的那部分使用反射(但在这种情况下,你需要方法的接收器,和我没有看到一个在这个问题)。

        object hmissing = System.Reflection.Missing.Value; 

        Xls.Application App = new Xls.ApplicationClass();
        App.Visible = true;
        Xls.Workbook wb = App.Workbooks.Open(@"c:\tmp\cartel1.xls", hmissing, hmissing, hmissing, hmissing, hmissing, hmissing,
            hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing);
        Xls.Worksheet ws = (Xls.Worksheet)wb.ActiveSheet;
        Xls.Range rng = ws.UsedRange;
        Xls.Range hdr = rng.Find("Function Name", hmissing, hmissing, hmissing, hmissing, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, hmissing, hmissing, hmissing);
        string hdrAdd = hdr.get_Address(hmissing, hmissing, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, hmissing, hmissing);
        string[] pcs = hdrAdd.Split('$');
        string col = pcs[1];
        int row;
        int.TryParse(pcs[2], out row);
        string methName;
        row++;
        while ((methName = App.get_Range(col + row.ToString(), hmissing).get_Value(hmissing) as String) != null)
        {
            App.Run(methName.Split('.')[1], hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing,
                hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing,
                hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing, hmissing,
                hmissing, hmissing, hmissing);
            row++;
        }


Answer 5:

额外票据以备将来参考。 只是想指出的是,与互操作性展示工作是凌乱。 最好的办法是使用库。



文章来源: Parsing an excel file and reading a cell