2012-12-11 121 views
0

這是真正的自我教育。但是,是否有更簡單的方法來讀取Excel表格,而不使用COM/INTEROP DLL?任何其他方式微軟可以更容易地從單元格讀取excel工作表單元中的值(並在Word中逐字讀取)?從.NET中讀取Excel和Word文件的最簡單方法

+1

您可以使用Oledbconnection逐行讀取DataReader對象。 – Derek

+1

同樣的問題與一些建議的答案 http://stackoverflow.com/questions/7711851/create-excel-without-interop-and-template-with-or-without-row-and-columnspan –

回答

1

對於文字& Excel是一個很好的第三方庫Aspose http://www.aspose.com/.net/total-component.aspx Aspose提供了一個非常易於使用的API,有很多選項來操縱word和excel文檔。文檔也很好。這就是說許可費可能是過高的。

如果您希望Word的開源替代品有DocX http://docx.codeplex.com/ DocX通過OpenXML提供了一個很好的API。

我們在一個非官方的分支,你會發現有用的做了一些重大的擴展DOCX:https://github.com/organizations/Word-DocX

的擴展名列表包括單一和多級列表的支持,讀取支持字體格式,段/中─休息等

1

如果你是關於新格式(xlmx,docx),我認爲你可以使用OpenXML

0

有一個用於ODBC數據源的excel驅動程序。它可以通過控制面板訪問。如果在那裏配置,或者使用連接字符串和excel驅動程序,則可以通過ADO API訪問它。

1

如果您想使用ODBC和讀取,例如工作表按照這個簡單的例子,這只是許多不同的方式從Excel

閱讀
OleDbCommand myCommand = new OleDbCommand("Select * from [Sheet1$];"); 
    OleDbConnection myConnection = new OleDbConnection(connectionString); 
    myConnection.Open(); 
    myCommand.Connection = myConnection; 
    OleDbDataReader myReader = myCommand.ExecuteReader(); 

    while (myReader.Read()) 
    { 
    // it can read upto 5 columns means A to E. In your case if the requirement is different then change the loop limits a/c to it. 
     //Change the Response.Write blow to Console.WriteLine() if you are wanting to test this in a Console application vs a web app. 
     for (int i = 0; i < 5; i++) 
     { 
     Response.Write(myReaderIdea.ToString() + " "); 
     } 
     Response.Write("<br>"); 
    } 
    myConnection.Close(); 

    //make sure to Dispose of the Reader object as well 
    ((IDisposable)myReaderIdea).Dispose() 
2

我所知道的一個闕stion詢問是否有Excel和Word互操作API的替代方案 - 但是在我閱讀時,會詢問這是因爲OP想要更簡單的方法,例如從Excel工作表讀取單元格或讀取Word文檔中的單詞。

我只想補充一點的Word,讀取文檔中的每個詞可以用很少的行來:

foreach (var word in myDocument.Words) 
{ 
    Console.WriteLine(word); 
} 

...我不相信這是可以做到更加簡單,所以我想知道它是否真的是OP所需的替代API,或者可能是一些Word互操作示例? (至少在使用Word interop API的情況下)

相關問題