Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск различных версий MS Excel в C#, Запуск различных версий MS Excel в C# 
:(
    Опции темы
allx2010
Дата 24.5.2010, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Доброго времени суток.
У меня следующий вопрос:
Было:
На машине стоял 2003 офис

строка кода из приведенного ниже примера
Код

_app = new ApplicationClass();

запускала 2003 эксель. Все работало как было нужно.

Стало:
Рядом с 2003 офисом поставился 2007 офис

строка кода из примера
Код

_app = new ApplicationClass();

стала запускать 2007 эксель.

Нужно: В данном частном случае, чтобы  запускался 2003 эксель, а в общем - возможность запуска любого из установленных на машине экселей  с помощью класса Microsoft.Office.Interop.Excel.Application.



Код

using System;
using Microsoft.Office.Interop.Excel;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      Microsoft.Office.Interop.Excel.Application _app;
      _app = new ApplicationClass();
      //Работаем 
      //....
      //Закрываем
      _app.Quit();
      System.Runtime.InteropServices.Marshal.ReleaseComObject(_app);
      GC.GetTotalMemory(true);
    }
  }
}



Это сообщение отредактировал(а) allx2010 - 24.5.2010, 20:19
PM MAIL   Вверх
Выхухоль
Дата 25.5.2010, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 9.10.2008
Где: Ташкент

Репутация: нет
Всего: 2



Кажется вы ерундой занимаетесь...но все таки:
Код

   1. public void OpenExcelFile(bool isOpenXMLFormat)  
   2. {  
   3.     //open the excel file using OLEDB  
   4.     OleDbConnection con;  
   5.   
   6.     if (isOpenXMLFormat)  
   7.         //read a 2007 file  
   8.         connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  
   9.             fileName + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";  
  10.     else  
  11.         //read a 97-2003 file  
  12.         connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  
  13.             fileName + ";Extended Properties=Excel 8.0;";  
  14.   
  15.     con = new OleDbConnection(connectionString);  
  16.     con.Open();  
  17.   
  18.     //get all the available sheets  
  19.     System.Data.DataTable dataSet = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
  20.   
  21.     //get the number of sheets in the file  
  22.     workSheetNames = new String[dataSet.Rows.Count];  
  23.     int i = 0;  
  24.     foreach (DataRow row in dataSet.Rows)  
  25.     {  
  26.         //insert the sheet's name in the current element of the array  
  27.         //and remove the $ sign at the end  
  28.         workSheetNames[i] = row["TABLE_NAME"].ToString().Trim(new[] { '$' });  
  29.         i++;  
  30.     }  
  31.   
  32.     if (con != null)  
  33.     {  
  34.         con.Close();  
  35.         con.Dispose();  
  36.     }  
  37.   
  38.     if (dataSet != null)  
  39.         dataSet.Dispose();  
  40. }  


Добавлено через 9 минут и 35 секунд
Сори ошибся, это я вам скинул код чтения из разных типов файлов. 

Для запуска используйте разные версии библиотеки 

Код

Microsoft.Office.Interop.Excel;

Для 2007 это 12
для 2003 это 11

но вам придется использовать либо ту либо другую...вместе тяжко очень...
PM MAIL ICQ   Вверх
jonie
Дата 25.5.2010, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата

но вам придется использовать либо ту либо другую...вместе тяжко очень... 
можно самому сгенерировать с ключем /namespace и вполне себе использовать.
А можно использовать IDisposable через ключевое слово dynamic (появилось в C#v4), создавая экземпляры экселя указывая версионно-зависимый prodID...

Это сообщение отредактировал(а) jonie - 25.5.2010, 20:22


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.