从.NET中读取Excel和Word文件的最简单方法

时间:2012-12-11 13:42:48

标签: c# excel ms-word office-interop

这是真正的自我教育。但是,有没有更简单的方法从Excel工作表中读取,而不使用COM / INTEROP DLL? Microsoft以任何其他方式更容易从单元格中逐个读取Excel中的值(并在Word中逐字逐句)?

5 个答案:

答案 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访问它。