2014-04-17 146 views
0

我對編程非常陌生,但是對於C#的大多數方面,我已經找到了解決方法。但是,我並沒有在網上找到關於這方面的信息,而今天我更加喋喋不休。我剛收到程序的整個電子郵件部分,當我被告知我無法使用數據庫來獲取電子郵件地址時,我不得不使用Excel文檔。我必須使用Excel文檔如何在不打開它的情況下解析xlsm文件

我需要讀取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()); 
    } 

這一個犯規像工作簿[ 「Sheet 1中」] - 無法應用用[]索引,以類型的表達式 '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(); 

任何幫助將apprciated!

+0

編譯器說,沒有'所有路徑GetCellValue'返回一個值,因爲你不'return'一它的價值。 – ClickRick

回答

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(); 
相關問題