这是真正的自我教育。但是,有没有更简单的方法从Excel工作表中读取,而不使用COM / INTEROP DLL? Microsoft以任何其他方式更容易从单元格中逐个读取Excel中的值(并在Word
中逐字逐句)?
答案 0 :(得分:2)
我知道这个问题是否有Excel和Word互操作API的替代品 - 但正如我读到的那样,这是因为OP想要一种更简单的方法,例如,从Excel工作表中读取单元格或读取Word文档中的单词。
我只是想为Word添加它,阅读文档中的每个单词都可以用很少的几行完成:
foreach (var word in myDocument.Words)
{
Console.WriteLine(word);
}
...我不相信这可以做得更简单,所以我想知道它是否真的是替代API的OP想要或者可能是几个Word互操作样本? (至少在使用Word interop API的情况下)
答案 1 :(得分:1)
如果您关于新格式(xlmx,docx),我认为您可以使用OpenXML。
答案 2 :(得分:1)
对于Word& 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
扩展列表包括对单级和多级列表的支持,支持读取字体格式,节/节打破等。
答案 3 :(得分: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();
答案 4 :(得分:0)
ODBC数据源有一个excel驱动程序。可通过控制面板访问。如果您在那里进行配置,或者使用带有excel驱动程序的连接字符串,则可以通过ADO API访问它。