открытие файла excel через приложение c # - PullRequest
0 голосов
/ 06 марта 2009

Мое приложение использует файл Excel для чтения данных из Интернета (с помощью веб-запроса Excel и чтения данных из файла Excel)
Файл Excel, который я использую, называется webGate.
моя проблема в том, что я не хочу, чтобы webGate был представлен пользователю.
если пользователь открывает файл Excel (любой другой файл), когда мое приложение читает файл webGate, файл webGate представляется вместе с файлом пользователя
(т. е. пользователь открывает файл Excel и представляет два файла, один из которых - webGate)
Любая идея о том, как я могу использовать файл, но он никогда не будет представлен пользователю?
Спасибо
Эран

Ответы [ 5 ]

1 голос
/ 09 марта 2009

Вы можете использовать .xls в качестве источника данных OLEDB. Вы используете провайдер данных Microsoft.Jet.OLEDB.4.0.

Это означает, что вы читаете данные из таблицы Excel, а не открываете .xls как документ в приложении Excel.

Это не автоматизация. Это не запускает 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();
  }
1 голос
/ 06 марта 2009

Чего вы хотите достичь? Это неясно. Есть идеи, как мне использовать файл , но он никогда не будет представлен пользователю?

Если вы хотите открыть / изменить файл в коде C #: http://www.codeproject.com/KB/office/csharp_excel.aspx

0 голосов
/ 08 марта 2009

Если проект займет менее 30 дней, вы можете использовать бесплатную оценку SpreadsheetGear for .NET , чтобы встроить книгу Excel в приложение .NET без ее представления пользователю. Просто выполните следующие действия:

  • Создайте новое приложение C # для Windows Forms и поместите элемент управления WorkbookView в свою форму (см. Руководство по SpreadsheetGear для Windows Forms, если вы не знаете, как это сделать).
  • Щелкните правой кнопкой мыши WorkbookView и выберите «Workbook Designer ...».
  • В конструкторе рабочих книг закройте рабочую книгу по умолчанию и используйте File Open ..., чтобы открыть рабочую книгу. Это включит вашу книгу в приложение в качестве ресурса.
  • Закройте конструктор книг.
  • Вы можете скрыть WorkbookView, если вы не хотите, чтобы пользователь видел его, или вы можете использовать свойство WorkbookView.DisplayReference, чтобы ограничить, какие части рабочей книги они могут видеть.

Вы можете скачать бесплатную оценку здесь .

Отказ от ответственности: я владею SpreadsheetGear LLC

0 голосов
/ 06 марта 2009

Я использую набор инструментов Infragistics для этой цели, и он прекрасно работает (поддерживает все версии Excel и очень многофункциональн))

Это может не соответствовать вашим потребностям, потому что это не бесплатно, но это в значительной степени стоит своей стоимости, если вы спросите меня

0 голосов
/ 06 марта 2009

Я не знаю, будет ли это слишком большой проблемой или нет, но, возможно, стоит экспортировать файл Excel в формате XML (если это возможно, я не знаю, как выглядит ваш файл Excel) и прочитайте данные таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...