繁体   English   中英

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

[英]opening excel file via c# application

My application using excel file in order to read data from web (using excel web query and reading the data from the excel file)
我使用的 excel 文件名为 webGate。
我的问题是我不希望将 webGate 呈现给用户。
如果用户在我的应用程序正在读取 webGate 文件时打开 excel 文件(任何其他文件),则 webGate 文件将与用户文件一起呈现
(即用户打开 excel 文件并显示两个文件,其中一个是 webGate)
关于如何使用该文件但它永远不会呈现给用户的任何想法?
谢谢
伊兰

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

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

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

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

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

完整的源代码在这里

片段:

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();
  }

我不知道这是否会太麻烦,但是将 excel 文件导出为 xml 可能是值得的(如果可能的话,我不知道你的 ZBF57C906FA7D2BB66D07Z372E4 看起来像什么)那样的数据。

为此,我使用Infragistics 工具集,效果很好(支持所有 excel 版本,并且功能非常丰富)

它可能不适合您的需求,因为它不是免费的,但如果您问我,它在很大程度上是值得的

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

  • Create a new C# Windows Forms application and put a WorkbookView control on your form (see the SpreadsheetGear Tutorial for Windows Forms app if your not sure how to do this).
  • 右键单击 WorkbookView 并选择“Workbook Designer...”。
  • 在 Workbook Designer 中,关闭默认工作簿并使用 File Open... 打开您的工作簿。 这会将您的工作簿作为资源嵌入到应用程序中。
  • 关闭工作簿设计器。
  • 如果您不希望用户看到 WorkbookView,您可以隐藏它,或者您可以使用 WorkbookView.DisplayReference 属性来限制他们可以看到的工作簿的哪些部分。

您可以在此处下载免费评估。

免责声明:我拥有 SpreadsheetGear LLC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM