Имя: Пароль:
1C
 
Как работать с Excel?
0 AigizK
 
23.08.07
16:36
Может кто примерчик скинит,как можно записать и считывать Excel файл
1 ТелепатБот
 
гуру
23.08.07
16:36
2 zbv
 
23.08.07
16:44
3 cucumber
 
23.08.07
17:04
// Процедура ИнициализацияEX()
//------------------------------
Функция ИнициализацияEX()
   Попытка
       Ex = СоздатьОбъект("Excel.Application");                    
       Ex.Visible = 0;
   Исключение  
       Предупреждение("Excel не установлен на данном компьютере!");
       Возврат 0;
   КонецПопытки;
   
       //Ex.DisplayAlerts = 0;
   //Ex.EnableCancelKey = 0;
   //Ex.EnableEvents = 0;    
   Попытка
       Ex.Workbooks.Open(Файл,0);
   Исключение
       Предупреждение("Не могу открыть Файл с именем "+Файл);
       Возврат 0;                    
   КонецПопытки;    
КонецФункции  


//------------------------------
// Процедура ЗакрытиеEX()
//------------------------------
Процедура ЗакрытиеEX()
   Попытка
       Ex.ActiveWorkbook.Close(0);
   Исключение  
       Сообщить ("Закройте файл");
   КонецПопытки;    

   //Ex.EnableEvents = 1;
   //Ex.ScreenUpdating =1;
   //Ex.EnableCancelKey =1;
   
   Ex.Visible=0;
   Ex.Quit();      
КонецПроцедуры

Процедура Сформировать()
 ИнициализацияEX()
  Если Ex.WorkSheets(1).Cells(1,1).Interior.ColorIndex=36 Тогда
   Ex.WorkSheets(1).Cells(1,1).value)=0;
  КонецЕсли;
ЗакрытиеEX()

КонецПроцедуры
4 AigizK
 
23.08.07
17:47
(3) Пробовал так не получилось.В отладчике посмотрел значение Ex.WorkSheets(1).Cells(1,1).Interior.ColorIndex=Ошибка в выражение!
5 AigizK
 
23.08.07
17:48
Есть такая обработка

Процедура Выгрузить_в_Excel()
   xl=СоздатьОбъект("Excel.Application");

   row=1; //первая строка
   спр=СоздатьОбъект("Справочник.Контрагенты");
   спр.ВыбратьЭлементы();
   Пока спр.ПолучитьЭлемент() = 1 Цикл
       xl.Cells(row,1).Value=спр.Код;
       xl.Cells(row,2).Value=спр.Наименование;
       row=row+1;//переходим на следующую строку
   КонецЦикла;
КонецПроцедуры


но мне надо чтоб сохранялся все это в указанный файл
6 smaharbA
 
23.08.07
17:55
(5) писателю надо неного мозги поправить
7 smaharbA
 
23.08.07
17:56
(5) Книга.SaveAs(Файл)
8 Adruid
 
23.08.07
18:37
(6) +5
9 AigizK
 
24.08.07
09:58
(6),(8) обработка (5) работает только в том случае когда отокрыт пусчтой эксел файл.А мне надо чтоб сохранялись джанные на файл в которую я указал.(3) у меня не заработала.Читайте (4).
10 zbv
 
24.08.07
10:06
(9) в (3) не рабочий пример...
11 AigizK
 
24.08.07
10:11
я нашел такой
токо выложить не могу.При копирование кода каракулы вставляются.Непонятно почему,до этого все нормально работало :(
12 zbv
 
24.08.07
10:12
(11) раскладку русскую включи
13 AigizK
 
24.08.07
11:49
i=0;  
   Пока i<100 цикл

                i=i+1;            //Sheets("Лист3").Select
           
                Если i = 1 тогда
                   Excel=СоздатьОбъект("Excel.Application");
                   НовыеРабочиеКниги = Excel.Workbooks;
                   рабочаякнига = НовыеРабочиеКниги.Add();
                   Excel.Caption = "Save";
                   //Excel.Sheets.add(); //добовляеет лист в  Excel
                   Excel.Sheets("Лист2").Name = "ЛистНе2";
                КонецЕсли;  
                 Если i = 50 тогда
                   Excel2=СоздатьОбъект("Excel.Application");
                   НовыеРабочиеКниги2 = Excel2.Workbooks;
                   рабочаякнига2 = НовыеРабочиеКниги2.Add();
                   Excel2.Caption = "Save2";
                   //Excel.Sheets.add(); //добовляеет лист в  Excel
                   Excel2.Sheets("Лист2").Name = "ЛистНе2";
                КонецЕсли;                
                   
                   
                Если i>=50 Тогда
                   
                   i1=i-49;
                   Excel2.Sheets("ЛистНе2").Select();
                   
                   Ячейка = Excel2.Cells(i1,1);
                   Ячейка.Value =i;
                иначе        
                   Ячейка = Excel.Cells(i,1);
                   Ячейка.Value = i;
                КонецЕсли;
                                        ы
        // Конецесли;
         КонецЦикла;
   
            Excel.Visible = 1;
            Excel2.Visible = 1;
14 AigizK
 
24.08.07
11:49
эта обработка позволяет создать новый эксель.Мне надо его теперь сохранить.Как это сделать то?
15 zbv
 
24.08.07
11:54
(14) (7) - не помогает?
16 AF
 
24.08.07
11:56
мыло давай...
17 AF
 
24.08.07
11:59
//Простейший пример вывода из 1С:Предприятия 7.7 в MS Excel. Обеспечение наличия у рабочей книги единственного листа,
//установка размера, жирности и цвета шрифта, ширины колонок, рамок и заливки ячеек. Выравнивание текста
//ячеек, группировка строк, установка числового формата ячеек, закрепление области.
Процедура Вывод()
   Попытка
       Application=СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить(ОписаниеОшибки(),"!!!");
       Сообщить("Возможно, MS Excel не установлен на этом компьютере.");
       Возврат;
   КонецПопытки;
   
   //Создание рабочей книги
   WorkBook=Application.WorkBooks.Add();
   //Получение окна
   Window=WorkBook.Windows(1);
   //Установка невидимости окна для убыстрения вывода
   Window.Visible=0;
   //Обеспечение наличия у рабочей книги единственного листа
   Если WorkBook.Worksheets.Count=0 Тогда
       WorkBook.Worksheets.Add();
   Иначе
       Application.DisplayAlerts=0;//не выдавать предупреждений
       Пока WorkBook.Worksheets.Count>1 Цикл
           WorkBook.Worksheets(1).Delete();
       КонецЦикла;
       Application.DisplayAlerts=-1;//восстановление флага выдачи предупреждений
   КонецЕсли;
   //Получение рабочего листа
   Worksheet=WorkBook.Worksheets(1);
   //Задание имени рабочего листа
   Worksheet.Name="Пример вывода";
   
   //Заголовок документа
   Worksheet.Range("A1").Value="Пример вывода из 1С:Предприятия в MS Excel";
   Worksheet.Range("A2").Value="сегодня "+ТекущаяДата();
   Worksheet.Range("A1:A2").Font.Size=14;//размер шрифта
   Worksheet.Range("A1:A2").Font.Bold=-1;//жирный шрифт
   
   //Задание ширины колонок
   Worksheet.Columns(1).ColumnWidth=60;
   Worksheet.Columns(2).ColumnWidth=15;
   Worksheet.Columns(3).ColumnWidth=15;
   
   //Шапка документа
   Worksheet.Range("A4").Value="Первая колонка";
   Для ы=7 по 10 Цикл//рамки
       Worksheet.Range("A4").Borders(ы).LineStyle=1;
       Worksheet.Range("A4").Borders(ы).Weight=-4138;//xlMedium
   КонецЦикла;
   Worksheet.Range("A4").Interior.ColorIndex=15;//заливка серым
   Worksheet.Range("A4").HorizontalAlignment=-4108;//выравнивание текста по центру
   
   Worksheet.Range("B4").Value="Вторая";
   Для ы=7 по 10 Цикл
       Worksheet.Range("B4").Borders(ы).LineStyle=1;
       Worksheet.Range("B4").Borders(ы).Weight=-4138;
   КонецЦикла;
   Worksheet.Range("B4").Interior.ColorIndex=15;
   Worksheet.Range("B4").HorizontalAlignment=-4108;
   
   Worksheet.Range("C4").Value="Третья";
   Для ы=7 по 10 Цикл
       Worksheet.Range("C4").Borders(ы).LineStyle=1;
       Worksheet.Range("C4").Borders(ы).Weight=-4138;
   КонецЦикла;
   Worksheet.Range("C4").Interior.ColorIndex=15;
   Worksheet.Range("C4").HorizontalAlignment=-4108;
   
   //Для группировки строк:
   Worksheet.Outline.SummaryRow=0;//"итоговые" строки отображать сверху (если снизу, то 1)
   
   //Вывод строк
   Worksheet.Range("A5").Value="Объект аналитики";
   Worksheet.Range("A5").Font.ColorIndex=5;//цвет шрифта - синий
   Worksheet.Range("B5").Value=123.45;
   Worksheet.Range("B5").Font.ColorIndex=5;
   Worksheet.Range("C5").Value=678.9;
   Worksheet.Range("C5").Font.ColorIndex=5;
   
   Worksheet.Range("A6").Value="Объект аналитики";
   Worksheet.Range("A6").Font.ColorIndex=3;//цвет шрифта - красный
   Worksheet.Range("B6").Value=123.45;
   Worksheet.Range("B6").Font.ColorIndex=3;
   Worksheet.Range("C6").Value=678.9;
   Worksheet.Range("C6").Font.ColorIndex=3;
   
   Worksheet.Range("A7").Value="Объект аналитики";
   Worksheet.Range("B7").Value=123.45;
   Worksheet.Range("C7").Value=678.9;
   
   Worksheet.Range("A8").Value="Объект аналитики";
   Worksheet.Range("B8").Value=123.45;
   Worksheet.Range("C8").Value=678.9;
   
   Worksheet.Range("A9").Value="Объект аналитики";
   Worksheet.Range("A9").Font.ColorIndex=3;//цвет шрифта - красный
   Worksheet.Range("B9").Value=123.45;
   Worksheet.Range("B9").Font.ColorIndex=3;
   Worksheet.Range("C9").Value=678.9;
   Worksheet.Range("C9").Font.ColorIndex=3;
   
   Worksheet.Range("A10").Value="Объект аналитики";
   Worksheet.Range("B10").Value=123.45;
   Worksheet.Range("C10").Value=678.9;
   
   Worksheet.Range("A11").Value="Объект аналитики";
   Worksheet.Range("B11").Value=123.45;
   Worksheet.Range("C11").Value=678.9;
   
   Worksheet.Range("A12").Value="Объект аналитики";
   Worksheet.Range("A12").Font.ColorIndex=5;//цвет шрифта - синий
   Worksheet.Range("B12").Value=123.45;
   Worksheet.Range("B12").Font.ColorIndex=5;
   Worksheet.Range("C12").Value=678.9;
   Worksheet.Range("C12").Font.ColorIndex=5;
   
   Worksheet.Range("A13").Value="Объект аналитики";
   Worksheet.Range("A13").Font.ColorIndex=3;//цвет шрифта - красный
   Worksheet.Range("B13").Value=123.45;
   Worksheet.Range("B13").Font.ColorIndex=3;
   Worksheet.Range("C13").Value=678.9;
   Worksheet.Range("C13").Font.ColorIndex=3;
   
   Worksheet.Range("A14").Value="Объект аналитики";
   Worksheet.Range("B14").Value=123.45;
   Worksheet.Range("C14").Value=678.9;
   
   Worksheet.Range("A15").Value="Объект аналитики";
   Worksheet.Range("B15").Value=123.45;
   Worksheet.Range("C15").Value=678.9;
   
   Worksheet.Range("A16").Value="Объект аналитики";
   Worksheet.Range("A16").Font.ColorIndex=3;//цвет шрифта - красный
   Worksheet.Range("B16").Value=123.45;
   Worksheet.Range("B16").Font.ColorIndex=3;
   Worksheet.Range("C16").Value=678.9;
   Worksheet.Range("C16").Font.ColorIndex=3;
   
   Worksheet.Range("A17").Value="Объект аналитики";
   Worksheet.Range("B17").Value=123.45;
   Worksheet.Range("C17").Value=678.9;
   
   Worksheet.Range("A18").Value="Объект аналитики";
   Worksheet.Range("B18").Value=123.45;
   Worksheet.Range("C18").Value=678.9;
   
   //Установка рамок
   Для НомСтр=5 по 18 Цикл
       Для ы=7 по 10 Цикл
           Worksheet.Range("A"+НомСтр).Borders(ы).LineStyle=1;
           Worksheet.Range("B"+НомСтр).Borders(ы).LineStyle=1;
           Worksheet.Range("C"+НомСтр).Borders(ы).LineStyle=1;
       КонецЦикла;
   КонецЦикла;
   
   //Группировка строк
   Worksheet.Range("7:8").Rows.Group();
   Worksheet.Range("10:11").Rows.Group();
   Worksheet.Range("14:15").Rows.Group();
   Worksheet.Range("17:18").Rows.Group();
   Worksheet.Range("6:11").Rows.Group();
   Worksheet.Range("13:18").Rows.Group();
   
   //Свёртка группировок до первого уровня
   Worksheet.Outline.ShowLevels(1);
   
   //Установка числового формата
   Попытка
       Worksheet.Range("B5:C18").NumberFormat="# ##0.00";
   Исключение
       Попытка
           Worksheet.Range("B5:C18").NumberFormat="# ##0,00";
       Исключение
       КонецПопытки;
   КонецПопытки;
   
   //Установка видимости приложения и его окна
   Application.Visible=-1;
   Window.Visible=-1;
   
   //Закрепление области
   Worksheet.Range("A5").Select();
   Window.FreezePanes = -1;
КонецПроцедуры //Вывод
18 AigizK
 
24.08.07
12:14
Помогло вот это
   Excel.Visible =0;  
   рабочаякнига.SaveAs(Файл);
   Excel.WorkBooks.close();
   Excel.Quit();
(7) просто не заметил :)
19 AigizK
 
24.08.07
18:17
Открываю таким образом файл.

Excel=СоздатьОбъект("Excel.Application");
   НовыеРабочиеКниги = Excel.Workbooks;
   рабочаякнига = НовыеРабочиеКниги.Open(Строка(Папка+Файл));

Но через раз может выскакивать такая ошибка.

НовыеРабочиеКниги = Excel.Workbooks;
{C:\DOCUMENTS AND SETTINGS\ДЕНИС.DENIZK\РАБОЧИЙ СТОЛ\AYGIZ\1C\ЗАКАЗЫ ПОСТАВЩИКАМ.ERT(73)}: Поле агрегатного объекта не обнаружено (Workbooks)

Надо сказать наверное еще,что я открываю эксель несколько раз,подряд.Т.е. создаю новый,далее открываю его,а потом закрываю

Закрываю так

   Excel.Visible =0;  
   рабочаякнига.SaveAs(Строка(ПапкаДляХранения+Файл));                        
   Excel.WorkBooks.close();
   Excel.Quit();
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.