通过c#应用程序打开excel文件

时间:2009-03-06 14:17:01

标签: c# excel

我的应用程序使用excel文件从web读取数据(使用excel web查询和从excel文件中读取数据)
我正在使用的excel文件名为webGate 我的问题是我不希望webGate呈现给用户 如果用户在我的应用程序正在读取webGate文件时打开excel文件(任何其他文件),则webGate文件将显示用户文件
(即用户打开excel文件,正在呈现两个文件,其中一个是webGate)
有关如何使用该文件的任何想法,但它永远不会呈现给用户? 由于
叶兰

5 个答案:

答案 0 :(得分:1)

你想要达到什么目的?目前还不清楚。 有关如何使用文件的任何想法,但它永远不会呈现给用户?

如果要在C#代码中打开/修改文件: http://www.codeproject.com/KB/office/csharp_excel.aspx

答案 1 :(得分:1)

您可以将.xls用作OLEDB数据源。您使用Microsoft.Jet.OLEDB.4.0数据提供程序。

这意味着您正在从Excel工作表中读取数据,而不是在Excel应用程序中将.xls作为文档打开。

这不是自动化。它不会启动Excel.exe。它不需要Excel.exe。不需要第三方组件。没有额外的成本(超出Windows的成本)。它适用于服务器端应用程序。

Full source code here

代码段:

void CreateExcelDocThroughAdoNet()
{
    const string Filename= "adonet-excel.xls";

    const string strConnect = 
      "Provider=Microsoft.Jet.OLEDB.4.0;" + 
      "Data Source=" + Filename + ";" + 
      "Extended Properties=\"Excel 8.0;HDR=yes;\""; 

    try
    {
      conn = new System.Data.OleDb.OleDbConnection(strConnect);
      CreateTable();
      for(int i=0; i < 4; i++) Insert(i);
    }
    catch (System.Exception ex)
    {
      System.Console.WriteLine("Exception: " + ex.Message+ "\n  " + ex.StackTrace); 
    }
}


private void CreateTable()
{

    string strSql = "CREATE TABLE SampleTable ( Ix NUMBER, CustName char(255), Stamp datetime )";

    System.Data.OleDb.OleDbCommand cmd= new System.Data.OleDb.OleDbCommand(strSql, conn);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
}

private void Insert(int ix)
{
    string strSql = "insert into [SampleTable] ([ix],[CustName],[Stamp]) value(@p1,@p2,@p3)";

    System.Data.OleDb.OleDbCommand cmd= new System.Data.OleDb.OleDbCommand(strSql, conn);

    cmd.Parameters.Add("@p1", System.Data.OleDb.OleDbType.Numeric).Value = ix;
    cmd.Parameters.Add("@p2", System.Data.OleDb.OleDbType.VarChar).Value = "Some text";
    cmd.Parameters.Add("@p3", System.Data.OleDb.OleDbType.Date).Value = System.DateTime.Now;

    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
  }

答案 2 :(得分:0)

我不知道这是否会有太多麻烦,但将excel文件导出为xml可能是值得的(如果可能的话,我不知道你的excel文件是什么样的)并以这种方式读取数据。

答案 3 :(得分:0)

我为此目的使用Infragistics toolset,它运行良好(支持所有excel版本,功能非常丰富)

它可能不适合您的需求,因为它不是免费的,但如果您问我,它的价格是非常值得的

答案 4 :(得分:0)

如果项目花费的时间少于30天,您可以使用SpreadsheetGear for .NET的免费评估在.NET应用程序中嵌入Excel工作簿,而不会将其呈现给用户。只需按照以下步骤操作:

  • 创建一个新的C#Windows窗体应用程序并在表单上放置一个WorkbookView控件(如果您不确定如何执行此操作,请参阅Windows Forms应用程序的SpreadsheetGear教程)。
  • 右键单击WorkbookView并选择“Workbook Designer ...”。
  • 在工作簿设计器中,关闭默认工作簿并使用“文件打开...”打开工作簿。这会将您的工作簿作为资源嵌入到应用程序中。
  • 关闭工作簿设计器。
  • 如果您不希望用户看到它,您可以隐藏WorkbookView,或者您可以使用WorkbookView.DisplayReference属性来限制他们可以看到的工作簿的哪些部分。

您可以下载免费评估here

免责声明:我拥有SpreadsheetGear LLC

相关问题