helpf.pro
Регистрация

V8 1С8.1 и Excel 2007

mov68
26.10.2010 10:25Прочитано: 16783
Есть файл для загрузки Excel 2007:
1.Работают ли описанные на сервере методы работы с Exсel в 2007? Если есть отличия, дайте пример плиз...
2.На компе стоят и Excel 2003 и Excel 2007, как в таком случае при запуске COMобъекта указать какой запускать?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
26.10.2010 11:16Ответ № 1
1. Не совсем понятен вопрос!? что значит - описанные на сервере методы работы с Exсel?
2. объект всегда один:
Код 1C v 8.х
 Попытка
Excel=Новый ComОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
mov68
26.10.2010 12:29Ответ № 2
Да, именно так Exсel и открывают, если на компе 2 версии Exсel, какая откроется? как задать чтобы открылась нужная?
mov68
26.10.2010 12:31Ответ № 3
Например работа через ADO DB, взятая с этого сервера прекрасно работает с 2003 версией и не работает с 2007, сейчас разбираюсь...
E_Migachev
26.10.2010 13:43Ответ № 4
(2) никак, объект Excel.Application - одни, от последней устатовки
(3) давай код и какую ошибку выводит, посмотрим )
mov68
26.10.2010 14:18Ответ № 5
Код 1C v 8.х
 еБаза=Новый COMОбъект("ADODB.Connection");
//Если необходимо в дальнейшем оперировать цифровыми значениями колонок,то ставим признак HDR = NO
//если необходимо производить загрузку с учетом псевдонимов в 1й строке,то ставим HDR = YES
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "+ИмяФайла;
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";

Попытка
еБаза.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;

влетает с 2007 в исключение с ошибкой:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Внешняя таблица не имеет предполагаемый формат

С форматом 2003-го все нормально грузится
mov68
26.10.2010 14:20Ответ № 6
Должны быть другие реквизиты для 2007 в строке подключения? обшариваю иннет, пока не нашел.
E_Migachev
26.10.2010 14:57Ответ № 7
(5) При использовании Office 2007 необходимо заменить в примере следующую строку кода:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
Замените эту строку кода следующей строкой:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
mov68
26.10.2010 15:01Ответ № 8
А Extended Properties оставляем Excel 8.0?
E_Migachev
26.10.2010 15:05Ответ № 9
(8) тоже меняется на:
Extended Properties=Excel 12.0
E_Migachev
26.10.2010 15:08Ответ № 10
Код 1C v 8.х
  // читаем данные
оЕксел = Новый COMОбъект("Excel.Application");
Version = оЕксел.Version;

Версия = Число(Сред(Version,1,Найти(Version,".")-1));
оЕксел.Quit();
Для Каждого Лист ИЗ СписокЛистов Цикл
ОбработкаПрерыванияПользователя();
Попытка
conn = NEW COMObject("ADODB.Connection");
conn.Provider = "Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0");
conn.Properties("Extended Properties").Value = "Excel " + ?(Версия = 12,"12.0","8.0") + ";HDR=NO;IMEX=1;MAXSCANROWS=200;FIRSTROWHASNAMES=1";
rs = NEW COMObject("ADODB.RecordSet");
conn.Open(ПолноеИмяФайла);
rs.ActiveConnection = conn;
rs.CursorType = 3;
rs.LockType = 2;
rs.Open("S_elect TOP 2000 * FROM `" + Лист.Значение + "$A:AX` ");

СчСтрок = 0;
КолКолонок = rs.Fields.Count;

Пока НЕ rs.EOF Цикл
rs.MoveNext();

КонецЦикла;

//................................


// Записываем
conn = NEW COMObject("ADODB.Connection");
strConn = "Provider=Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0") + ";"
+ "Data Source=" + FileName + ";Extended Properties=Excel " + ?(Версия = 12,"12.0","8.0");
conn.ConnectionString = strConn;

Попытка
conn.Open();
cmd = NEW COMObject("ADODB.Command");
cmd.ActiveConnection = conn;
Попытка
cmd.CommandText = "CREATE TABLE `MyList` (Value_1 char(255), Value_2 char(255))";
cmd.Execute();
Исключение
КонецПопытки;
cmd.CommandText = "I_nsert INTO `MyList` (Value_1, Value_2) values ('AAA', 'Andrew')";
cmd.Execute();
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
Попытка
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

КонецПопытки;
mov68
26.10.2010 15:08Ответ № 11
СПАСИБО, сработало, и как ни странно даже при Extended Properties=Excel 8.0

Вопрос закрыт. Еще раз спасибо.
E_Migachev
26.10.2010 15:49Ответ № 12
)
andogskiy
12.11.2012 16:19Ответ № 13
А для серверного варианта базы на управляемых формах не подскажете код?
Приведенный пример выдает ошибку: "Ошибка при вызове метода контекста (Properties): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно."
DJ_Serega
12.11.2012 18:30Ответ № 14
а я подключаю Excel вот таким образом:

Код 1C v 8.х
 
Попытка
Эксель = Неопределено;
Книга = Неопределено;
Лист = Неопределено;

Состояние("Выполняется подключение к Excel");
Попытка
Книга = ПолучитьCOMОбъект(Файл, "Excel.Application");
Эксель = Книга.Application;
Исключение
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Open(Файл);
КонецПопытки;
Лист = Книга.WorkSheets(1);
Эксель.Visible = Истина;
Исключение
Сообщить("Не удалось подключить Excel." + Символы.ПС + ОписаниеОшибки());
Возврат;
КонецПопытки;
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.