如何解析xlsm文件而不打开它

时间:2014-04-17 18:40:50

标签: c#

我对编程很陌生,但是对于C#的大多数方面,我已经找到了解决方法。但我在网上找不到这个,我今天更加精力充沛。当我被告知我无法使用数据库从中获取电子邮件地址时,我刚刚完成了我的程序的整个电子邮件部分,我不得不使用Excel文档

我需要阅读xlsm并将用户名与电子邮件进行比较以获取当前用户的电子邮件地址。我已经有了用户名,但是没有找到很多在线帮助xlsm。以下是我尝试过的一些例子:


这个是理想的,因为我喜欢我的代码简短而甜蜜。但是当我尝试运行它时,我得到'根级别的数据无效。第1行,第1行。'我猜这与使用XDocument有关。多数民众赞成我如何解析XML文件,所以我可能在这里有错误的类,但是在xlsm上再找不到,所以我不知道该使用什么

string[] arr = XDocument.Load(@"C:\example.xlsm").Descendants("Login name" + "Email").Select(element => element.Value).ToArray();  

即使在下载OpenXMLSDKV25之后,它也不会找到'DocumentFormat'并且文件名已经被使用[const string fileName],但如果我将其更改为fileName2,那么它表示并非所有代码路径都返回一个值。

using DocumentFormat.OpenXml.Packaging;  
using DocumentFormat.OpenXml.Spreadsheet;  
using Excel = Microsoft.Office.Interop.Excel;

    public static string GetCellValue(string fileName, string sheetName, string addressName)
    {
        const string fileName = @"C:\example.xlsm";

        // Retrieve the value in cell A1.
        string value = GetCellValue(fileName, "Sheet1", "C2");

        Console.WriteLine(value);

        // Retrieve the date value in cell A2.
        value = GetCellValue(fileName, "Sheet1", "F2");

          Console.WriteLine(DateTime.FromOADate(double.Parse(value)).ToShortDateString());
    }  

这个不喜欢工作簿[“Sheet1”] - 无法将带有[]的索引应用于“Microsoft.Office.Interop.Excel.Workbook”类型的表达式

using Excel = Microsoft.Office.Interop.Excel;

        //Excel.Application excel = new Excel.Application();
        //Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
        //Excel.Worksheet worksheet = workbook["Sheet1"] as Excel.Worksheet;

        //string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();

        //worksheet = null;
        //workbook.Close();
        //excel.Quit();  

任何帮助都会被批准!

1 个答案:

答案 0 :(得分:0)

我更正了您的代码(您必须通过Sheets集合访问工作表:

using Excel = Microsoft.Office.Interop.Excel;

    //Excel.Application excel = new Excel.Application();
    //Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
    //Excel.Worksheet worksheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;

    //string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();

    //worksheet = null;
    //workbook.Close();
    //excel.Quit();  
相关问题