这真的是为了自学。但是,是否有一种更简单的方法可以在不使用 COM/INTEROP DLL 的情况下从 Excel 表中读取?微软还有什么其他方式可以更容易地从一个单元格的单元格中读取值(以及逐字逐句Word
)?
5 回答
我知道这个问题询问是否有 Excel 和 Word 互操作 API 的替代品 - 但当我阅读它时,之所以问这个问题是因为 OP 想要一种更简单的方法来,例如,从 Excel 工作表中读取单元格或读取单词一个Word文档。
我只是想为 Word 添加,阅读文档中的每个单词可以用很少的几行来完成:
foreach (var word in myDocument.Words)
{
Console.WriteLine(word);
}
...我不相信这可以做得更简单,所以我想知道它是否真的是 OP 想要的替代 API,或者可能是几个 Word 互操作示例?(至少在使用 Word 互操作 API 的情况下)
对于 Word 和 Excel,一个很好的第 3 方库是 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
扩展列表包括对单级和多级列表的支持、对阅读字体格式、节/分节符等的支持。
例如,如果您想使用 ODBC 并读取 WorkSheet,请遵循这个简单的示例,这只是从 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();
如果您对新格式(xlmx,docx)感兴趣,我认为您可以使用OpenXML。
有一个用于 ODBC 数据源的 excel 驱动程序。可通过控制面板访问。如果您在那里进行配置,或者使用带有 excel 驱动程序的连接字符串,您可以通过 ADO API 访问它。