22.04.05 — 12:14
Попытка
Прайс = Новый ComОбъект(«Excel.Application»);
Исключение
Предупреждение(«Не удалось создать COM-объект Excel.Application!!!»);
Возврат;
КонецПопытки;
Попытка
Книга = Прайс.WorkBooks().Open(ИмяФайла);
Исключение
Предупреждение(«» + ОписаниеОшибки());
Возврат;
КонецПопытки;
ну че тутуа писать????
Книга.Close();
1 — 22.04.05 — 12:15
65k.
Или тебе только не пустые?
2 — 22.04.05 — 12:16
miki
ну чтобы точно понятно что дальше ничего нету
3 — 22.04.05 — 12:18
Проверяй значение ячейки на <пусто> или маркер какой-нить пиши в конец ХЛС.
4 — 22.04.05 — 12:18
miki (3)
нифина был другой способ
мне тута каньше ктото обьяснил но я забыл
а в архивах нету
5 — 22.04.05 — 12:21
ВходExcel = СоздатьОбъект(«Excel.Application»);
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
….
а далее все обходы по строкам и столбцам через циклы.
6 — 22.04.05 — 12:23
Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
вот ето место пожалуйста поподробнее.
как получить 1-й лист?
7 — 22.04.05 — 12:25
+5 Как пример
//*******************************************
//проверяет есть ли нужные сведения на листе
Функция ПроверкаПередзагрузкой(ВыбранныйЛист,НомерЛиста);
ЕстьНужныеСведения=0;
КонСтолб=ВыбранныйЛист.Cells(1,1).SpecialCells(11). Column;
Для i = НачСтр По КонСтр Цикл
Если ПустоеЗначение(ВыбранныйЛист.Cells(i,3).Text)=1 Тогда
Продолжить;
Иначе
Для к=1 по КонСтолб Цикл
//Проверим ячейки на всякую дрянь
Если ПроверкаБитыхСсылок(ВыбранныйЛист.Cells(i,к))=1 Тогда
ВнестиВКомментарийЗагрузки(«На выбранном вами листе №»+НомерЛиста+» имеются ошибки.Лист не будет загружен»);
Возврат ЕстьНужныеСведения;
КонецЕсли;
КонецЦикла;
Если //Возможно это индетификаторы колонок
(Число(ВыбранныйЛист.Cells(i,3).Value)=3)
и (Число(ВыбранныйЛист.Cells(i,1).Value)=1)
и (Число(ВыбранныйЛист.Cells(i,2).Value)=2)
и (Число(ВыбранныйЛист.Cells(i,4).Value)=4)
и (Число(ВыбранныйЛист.Cells(i,5).Value)=5)
и (Число(ВыбранныйЛист.Cells(i,6).Value)=6)
и (Число(ВыбранныйЛист.Cells(i,7).Value)=7)
и (Число(ВыбранныйЛист.Cells(i,8).Value)=8)
и (Число(ВыбранныйЛист.Cells(i,9).Value)=9)
и (Число(ВыбранныйЛист.Cells(i,10).Value)=10)
и (Число(ВыбранныйЛист.Cells(i,11).Value)=11)
и (Число(ВыбранныйЛист.Cells(i,12).Value)=12)
и (Число(ВыбранныйЛист.Cells(i,13).Value)=13)
и (Число(ВыбранныйЛист.Cells(i,14).Value)=14)
и (Число(ВыбранныйЛист.Cells(i,15).Value)=15)
и (Число(ВыбранныйЛист.Cells(i,16).Value)=16)
и (Число(ВыбранныйЛист.Cells(i,17).Value)=17)
Тогда //наверное то что нам нужно
ЕстьНужныеСведения=1;
Возврат ЕстьНужныеСведения;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ЕстьНужныеСведения;
КонецФункции // ПроверкаПередзагрузкой
//Проверим, а есть ли нужные данные
Если ПроверкаПередзагрузкой(НужныйЛист,ЛистExcel)=0 Тогда
Предупреждение(«На выбранном вами листе нет нужных сведений»,5);
Возврат;
КонецЕсли;
МаксимумПустыхСтрок=25;//чтобы просмотреть все строки, но не зациклиться
СчетчикПустыхСтрок=0;//т.к. м.б. какие-либо строки оставлены пустыми для разделения и прочей красивости
НайденыйСтатус=»»;
Для index=НачСтр По КонСтр Цикл // обход по строкам
ЗначениеКолонки1 = НужныйЛист.Cells(index,1).Value;
Если ПустоеЗначение(ЗначениеКолонки1)=1 Тогда //чтобы побыстрее просмотреть
СчетчикПустыхСтрок=СчетчикПустыхСтрок+1;
Если СчетчикПустыхСтрок>МаксимумПустыхСтрок Тогда //хорош копать
СчетчикПустыхСтрок=0;
Прервать;
Иначе
Продолжить;
КонецЕсли;
Иначе //не пустое значение 1колонки
…………….
ну и т.д.
8 — 22.04.05 — 12:27
+5 и еще
//*******************************************
//проверяет нет ли всякой бяки на в ячейке
Функция ПроверкаБитыхСсылок(Ячейка)
БитаяСсылка=»»;
ТекстЯчейки=Ячейка.Text;
Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда
БитаяСсылка=0;
//Сообщить(Ячейка.Value);
Иначе
БитаяСсылка=1;
//Сообщить(ТекстЯчейки);
КонецЕсли;
Возврат БитаяСсылка;
КонецФункции // ПроверкаБитыхСсылок
———————————————
это основные операторы модуля
//Для исключения ошибок екселя
СписокОшибокЁкселя=СоздатьОбъект(«СписокЗначений»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ПУСТО!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ДЕЛ/0!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ЗНАЧ!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ССЫЛКА!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ИМЯ?»);
СписокОшибокЁкселя.ДобавитьЗначение(«#ЧИСЛО!»);
СписокОшибокЁкселя.ДобавитьЗначение(«#Н/Д»);
9 — 22.04.05 — 12:34
Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
вот ето место пожалуйста поподробнее.
как получить 1-й лист?
10 — 22.04.05 — 12:36
мне раньше показывали способ как
узнать количество непустых строк.
11 — 22.04.05 — 12:39
9 — Метод Sheets(НомерЛиста)
12 — 22.04.05 — 12:52
(9)
КоличествоЛистов=ВходExcel.Worksheets.Count;
Для i=1 По КоличествоЛистов Цикл
13 — 22.04.05 — 13:01
не сегодня чета нету умных…
14 — 22.04.05 — 13:02
(13)Предупреждение
15 — 22.04.05 — 13:05
Мля, итак уже все разжевал…
Ты чо?
КоличествоЛистов=ВходExcel.Worksheets.Count;
Для i=1 По КоличествоЛистов Цикл
НужныйЛист=ВходExcel.Worksheets.Item(i);
………и т.д.
16 — 22.04.05 — 13:07
Ret(15)
как узнать номер последней не пустой строки?
17 — 22.04.05 — 13:09
НужныйЛист=Книга.Sheets(1);
КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
Для поз=1 по КонСтрока Цикл
Строка=НужныйЛист.Cells(поз,1).Value;
Сообщить(«»+поз+»=»+Строка);
КонецЦикла;
=========================
нехочет работать
18 — 22.04.05 — 13:11
(13)
Я конечно привожу куски кода, который уже заточен под мои задачи, но из них вполне можно понять логику и использовать под себя.
Когда сам писал это, не мало пришлось покапаться в доках, а тебе выкладываешь на тарелочке, а ты разобраться не можешь.
За тебя-то никто не будет делать. Смотри, разбирайся и делай.
19 — 22.04.05 — 13:15
Может тебе надо:
РеальноЮзается=Лист.UsedRange;
КолонокРеальноЮзаемых=ИспользуемыйЛист.Columns.Count();
СтрокРеальноЮзаемых=ИспользуемыйЛист.Rows.Count();
20 — 22.04.05 — 13:15
Мля…. я тащусь….
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);
КонСтр=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолб=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
Для index=НачСтр По КонСтр Цикл // обход по строкам
Для index2 = 1 По КонСтолб Цикл //обход по колонкам
Значение = НужныйЛист.Cells(index,index2).Value;
——далее работаешь со значением
———- и т.д. (шо тебе ящо конец цикла написать?)
21 — 22.04.05 — 13:16
короче ето делается так.
=====================
Процедура ЗагрузитьНажатие(Элемент)
Попытка
Прайс = Новый ComОбъект(«Excel.Application»);
Исключение
Предупреждение(«Не удалось создать COM-объект Excel.Application!!!»);
Возврат;
КонецПопытки;
Попытка
Книга = Прайс.WorkBooks().Open(ИмяФайла);
Исключение
Предупреждение(«» + ОписаниеОшибки());
Возврат;
КонецПопытки;
НужныйЛист=Книга.Sheets(1);
//НужныйЛист=Прайс.Worksheets.Item(1);
КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row;
КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column;
Для поз=1 по КонСтрока Цикл
Строка=НужныйЛист.Cells(поз,1).Value;
Сообщить(«»+поз+»=»+Строка);
КонецЦикла;
Книга.Close();
КонецПроцедуры
============================
ето я чета туплю сегодня
спасибо за ответ Ret-у
Cells(1,1).SpecialCells(11).Row -последняя не пустая строка
Cells(1,1).SpecialCells(11).Column — последний не пустой столбец
и еще выше я привел процеДУРУ ПроверкаБитыхСсылок(Ячейка) привел.
Перед загрузкой если там ошибки, то на Значение = НужныйЛист.Cells(index,index2).Value 1С вылетает. Поэтому их надо обязательно отсечь!!!
Не помню где это описано, но это известная весчь.
escritor |
|
||
---|---|---|---|
|
Как при загрузке данных из Excel получить количество колонок и строк в файле? |
Yandex |
|
||
---|---|---|---|
|
E_Migachev |
|
||
---|---|---|---|
|
Например так:
Код 1C v 8.х
Посмотрите пример, в котором это используется |
demiurg |
|
||
---|---|---|---|
|
О, только вчера над этим же голову ломал, я получил так:
Код 1C v 8.х
|
rasswet |
|
||
---|---|---|---|
|
UsedRange -это заполненые? |
demiurg |
|
||
---|---|---|---|
|
UsedRange — это все ячейки содержащие значение на данный момент. |
E_Migachev |
|
||
---|---|---|---|
|
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе. |
Excel = Новый COMОбъект("Excel.application"); Excel.WorkBooks.Open(ПолноеИмяФайла); Лист = Excel.Sheets(1); // Первый лист по индексу
Excel.DisplayAlerts = False;
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Excel.Application.Quit();
Строка = Лист.Cells(Строка, Колонка).Value;
Нумерация колонок и строк начинается с 0!
OpenOffice = Новый ComОбъект("com.sun.star.ServiceManager"); // Создаем СОМ-объект scr = Новый ComОбъект("MSScriptControl.ScriptControl"); scr.language = "javascript"; scr.eval("MassivParametrov = new Array()"); MassivParametrov = scr.eval("MassivParametrov"); scr.AddObject("OpenOffice", OpenOffice); scr.eval("MassivParametrov[0]=OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')"); scr.eval("MassivParametrov[0].Name='Hidden'"); scr.eval("MassivParametrov[0].Value=true"); Desktop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // Создаем Desktop URL = ConvertToURL(ПолноеИмяФайла); // Правильно формируем имя файла Doc = Desktop.LoadComponentFromURL(URL, "_blank", 0, MassivParametrov); Doc.lockControllers(); Doc.addActionLock(); Sheets = Doc.GetSheets(); Лист = Sheets.GetByIndex(0); // Открываем первый лист по индексу
и функция ConvertToURL:
// Для преобразования имени файла при обращении к OpenOffice/LibreOffice Функция ConvertToURL(FileName) ИмяФайла = СтрЗаменить(FileName," ","%20" ); ИмяФайла = СтрЗаменить(ИмяФайла,"","/"); Возврат "file:/" + "/localhost/" + ИмяФайла; КонецФункции
oCell = Лист.GetCellbyPosition(0, 0); oCursor = Лист.createCursorByRange(oCell); oCursor.GotoEndOfUsedArea(Истина); aAddress = oCursor.RangeAddress; ВсегоКолонок = aAddress.EndColumn; ВсегоСтрок = aAddress.EndRow;
Doc.close(true); Desktop.terminate();
Читаем как строку:
Строка = Лист.getCellByPosition(Колонка,Строка).getText().String();
http://help1c.com/faq8/view/702.html
Данный метод обладает гораздо большей производительностью и простотой, чем банальный объектный метод через COM соединение.
Все что потребуется это создание 2 объектов
Здесь универсальная обработка по загрузке Номенклатуры из Excel:
// Функция для Платформы 1С 8.0 или 8.1 // Выполняет загрузку из файла Excel // // Параметры // ПутьКФайлу - <Строка> - путь к файлу xls // // Автор: ---%%%Gmix 16.03.2006 12:38:48 // // Возвращаемое значение: // <Булево> – Истина загрузка произошла // - Ложь загрузки не было // Функция ВыполнитьЗагрузку(ПутьКФайлу) Экспорт Файл=Новый Файл(ПутьКФайлу); Если Файл.Существует() Тогда Стр_Файл=Файл.ПолноеИмя; // Отрезаем слеш если он есть в конце пути Стр_Путь=Файл.Путь; Если Прав(Стр_Путь,1)="" Тогда Стр_Путь=Лев(Стр_Путь,СтрДлина(Стр_Путь)-1); КонецЕсли; // Строка корнекта Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)}; |DriverId=790; |Dbq="+Стр_Файл+"; |DefaultDir="+Стр_Путь+";"; Об_Конект = Новый COMОбъект("ADODB.Connection"); Попытка Об_Конект.Open(Стр_Конект); Исключение Сообщить ("Не возможно подключится к Microsoft Excel Driver!!! |Возможно файл ["+Стр_Файл+"] открыт другим пользователем."); Возврат Ложь; КонецПопытки; // формируем запрос // Здесь есть нюанс первая строка данных всегда будет являться заголовком // если она пустая то имена клонок формируются следующим образом F<Номер колонки> Стр_SQL = "select | F1 as Артикул, | F2 as Наименование, | F3 as ПолноеНаименование | FROM [A1:AZ100000] | WHERE ((F1 Is Not Null) AND (F1 <>''))"; Об_РекордСет = Новый COMОбъект("ADODB.Recordset"); Попытка Об_РекордСет=Об_Конект.Execute(Стр_SQL); Исключение Сообщить("Не удадлось выполнить запрос к файлу Excel |"+ ОписаниеОшибки(),СтатусСообщения.Важное); Возврат Ложь; КонецПопытки; Пока НЕ Об_РекордСет.EOF Цикл // Получаем данные из Об_РекордСет // ... Сообщить(""); Для каждого ОБ_Поле Из Об_РекордСет.Fields Цикл // Пример вывода информации Сообщить(ОБ_Поле.Name,Об_РекордСет.Fields(ОБ_Поле.Name).value); КонецЦикла; // ... Об_РекордСет.MoveNext(); КонецЦикла; Об_Конект.Close(); // Закрываем конект Об_Конект=Неопределено; Об_РекордСет=Неопределено; Возврат Истина; Иначе Сообщить("Файл "+ПутьКФайлу+" не найден!"); Возврат Ложь; КонецЕсли; КонецФункции
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet.UsedRange.Columns.Count; Состояние("Загрузка в память данных ведомости..."); ExcelЛист=ФайлХЛС.ActiveSheet; Область = СерверExcel.Range(ExcelЛист.Cells(1,1), ExcelЛист.Cells(КонечнаяСтрокаДанных,КоличествоКолонокДанных)); МассивДанныхEXEL = Область.Value.Выгрузить(); КонецПроцедуры Процедура ИнициализацииЕкселя() Состояние("Происходит инициализация EXCEL..."); Попытка СерверExcel1 = Новый COMОбъект("Excel.Application"); СерверExcel1.DisplayAlerts = 0; Исключение ЗапущенExcel = 0; Сообщить(ОписаниеОшибки(),"!"); КонецПопытки; КонецПроцедуры
Чтение и запись данных MS Excel с использованием 1С, примеры форматирования таблицы |
Часто возникает потребность прочитать данные из таблицы MS Добавляем форму обработку и на нее помещаем две кнопки: Загрузить данные и Выгрузить данные. Поскольку цель данного примера показать приемы работы с загрузкой и выгрузкой данных в файл MS Excel, то на форму промежуточные данные выводить не будем. Теперь поместим в обработчики кнопкок «Загрузить данные» и «Выгрузить данные»функционал чтения данных из файла MS Excel. В обработчиках кнопок получается следующий код: Процедура ЗагрузитьДанныеНажатие(Элемент) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите имя файла для чтения"; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Файл MS Excel (.xlsx)| *.xlsx"; Если Не Диалог.Выбрать() Тогда Сообщить("Файл для обработки не выбран!"); Иначе ФайлДанных = Диалог.ПолноеИмяФайла; Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ФайлДанных); Состояние("Обработка файла Microsoft Excel..."); Исключение Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!"); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка Excel.Sheets(1).Select(); Исключение Excel.ActiveWorkbook.Close(); Excel = 0; Сообщить("Файл " + Строка(ФайлДанных) + " не соответствует необходимому формату! Первый лист не найден!"); Возврат; КонецПопытки; Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1); Если Версия = "8" Тогда ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column; КонецЕсли; ТЗ.Очистить(); Попытка Для Сч = 2 По ФайлСтрок Цикл Состояние("Обрабатывается строка " + Строка(Сч) + " из " + Строка(ФайлСтрок)); Если НЕ СокрЛП(Excel.Cells(Сч, 1).Value) = "" Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.НомерПоПорядку = СокрЛП(Excel.Cells(Сч, 1).Value); НоваяСтрока.ТестовыйТекст = СокрЛП(Excel.Cells(Сч, 2).Text); НоваяСтрока.ТестовоеЧисло1 = СокрЛП(Excel.Cells(Сч, 3).Value); НоваяСтрока.ТестовоеЧисло2 = СокрЛП(Excel.Cells(Сч, 4).Value); НоваяСтрока.ТестовоеЧисло3 = СокрЛП(Excel.Cells(Сч, 5).Value); НоваяСтрока.ТестовоеЧисло4 = СокрЛП(Excel.Cells(Сч, 6).Value); НоваяСтрока.ТестовоеЧисло5 = СокрЛП(Excel.Cells(Сч, 7).Value); НоваяСтрока.ТестовоеЧисло6 = СокрЛП(Excel.Cells(Сч, 8).Value); НоваяСтрока.ТестовоеЧисло7 = СокрЛП(Excel.Cells(Сч, 9).Value); НоваяСтрока.ТестоваяДата = СокрЛП(Excel.Cells(Сч, 10).Value); КонецЕсли; КонецЦикла; Исключение Excel.ActiveWorkbook.Close(); Excel.Quit(); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка Сообщить("Файл Excel прочитан!"); Excel.Quit(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецЕсли; КонецПроцедуры Процедура ВыгрузитьДанныеНажатие() Для Каждого ТекСтрока Из ТЗ Цикл ТекСтрока.ТестовоеЧисло5 = ТекСтрока.ТестовоеЧисло5 - Число(ТекСтрока.НомерПоПорядку); КонецЦикла; Если ТЗ.Количество() = 0 Тогда Возврат; КонецЕсли; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = "Выберите имя файла для сохранения"; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Файл MS Excel *.xlsx)| *.xlsx"; Если Диалог.Выбрать() Тогда ФайлДанных = Диалог.ПолноеИмяФайла; Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка Книга = Excel.WorkBooks.Add(); Лист = Книга.WorkSheets(1); Лист.Name = "Выгрузка данных"; Excel.ActiveWindow.View = 2; Excel.ActiveWindow.Zoom = 100; Лист.PageSetup.Orientation = 2; Лист.Columns(1).ColumnWidth = 10; Лист.Columns(2).ColumnWidth = 25; Лист.Columns(10).ColumnWidth = 13; Лист.Columns(11).ColumnWidth = 13; Лист.Cells(1, 1).Value = "Номер по порядку"; Лист.Cells(1, 2).Value = "Выгружаемый текст"; Лист.Cells(1, 3).Value = "Выгружаемые числа"; Лист.Cells(1, 10).Value = "Выгружаемая дата"; Лист.Cells(1, 11).Value = "Программная формула"; Лист.Cells(2, 3).Value = "Число 1"; Лист.Cells(2, 4).Value = "Число 2"; Лист.Cells(2, 5).Value = "Число 3"; Лист.Cells(2, 6).Value = "Число 4"; Лист.Cells(2, 7).Value = "Число 5"; Лист.Cells(2, 8).Value = "Число 6"; Лист.Cells(2, 9).Value = "Число 7"; Лист.Range("A1:A2").MergeCells = Истина; Лист.Range("A1:A2").WrapText = Истина; Лист.Range("B1:B2").MergeCells = Истина; Лист.Range("B1:B2").WrapText = Истина; Лист.Range("J1:J2").MergeCells = Истина; Лист.Range("J1:J2").WrapText = Истина; Лист.Range("K1:K2").MergeCells = Истина; Лист.Range("K1:K2").WrapText = Истина; Лист.Range("C1:I1").MergeCells = Истина; Лист.Range("C1:I1").WrapText = Истина; Лист.Range("A1:K2").Borders.Linestyle = 1; Лист.Range("A1:K2").HorizontalAlignment = 3; Лист.Range("A1:K2").VerticalAlignment = 2; Лист.Range("A1:K2").Font.Bold = 1; СчетчикСтрок = 3; Для Каждого ТекСтрока Из ТЗ Цикл Лист.Cells(СчетчикСтрок, 1).Value = ТекСтрока.НомерПоПорядку; Лист.Cells(СчетчикСтрок, 2).Value = ТекСтрока.ТестовыйТекст; Лист.Cells(СчетчикСтрок, 3).Value = ТекСтрока.ТестовоеЧисло1; Лист.Cells(СчетчикСтрок, 4).Value = ТекСтрока.ТестовоеЧисло2; Лист.Cells(СчетчикСтрок, 5).Value = ТекСтрока.ТестовоеЧисло3; Лист.Cells(СчетчикСтрок, 6).Value = ТекСтрока.ТестовоеЧисло4; Лист.Cells(СчетчикСтрок, 7).Value = ТекСтрока.ТестовоеЧисло5; Лист.Cells(СчетчикСтрок, 8).Value = ТекСтрока.ТестовоеЧисло6; Лист.Cells(СчетчикСтрок, 9).Value = ТекСтрока.ТестовоеЧисло7; Лист.Cells(СчетчикСтрок, 10).Value = ТекСтрока.ТестоваяДата; Лист.Cells(СчетчикСтрок, 11).Formula = "=F" + Строка(СчетчикСтрок) + "+G" + Строка(СчетчикСтрок); СчетчикСтрок = СчетчикСтрок + 1; КонецЦикла; СчетчикСтрок = СчетчикСтрок - 1; Лист.Range("A3:K" + Строка(СчетчикСтрок)).Borders.Linestyle = 1; Лист.Range("A3:K" + Строка(СчетчикСтрок)).VerticalAlignment = 2; Для НомерСтроки = 3 По СчетчикСтрок Цикл Для Столбец = 4 По 9 Цикл Лист.Cells(НомерСтроки, Столбец).NumberFormat = "0.00"; КонецЦикла; Лист.Cells(НомерСтроки, 11).NumberFormat = "0.00"; КонецЦикла; Исключение Excel.Quit(); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Попытка Книга.SaveAs(ФайлДанных); Сообщить("Файл " + ФайлДанных + " успешно сохранен"); Исключение Сообщить(ОписаниеОшибки() + " Файл не сохранен!"); Возврат; КонецПопытки; Попытка Excel.Quit(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецЕсли; КонецПроцедуры В результате получилась обработка, в которой сначала из файл На этом пока все. Пример обработки и файла для чтения данных можно скачать |
ну че тутуа писать???? Книга.Close;
65k.Или тебе только не пустые?
mikiну чтобы точно понятно что дальше ничего нету
Проверяй значение ячейки на <пусто> или маркер какой-нить пиши в конец ХЛС.
miki нифина был другой способмне тута каньше ктото обьяснил но я забыла в архивах нету
….а далее все обходы по строкам и столбцам через циклы.
RetНужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);вот ето место пожалуйста поподробнее.как получить 1-й лист?
———————————————это основные операторы модуля
RetНужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);вот ето место пожалуйста поподробнее.как получить 1-й лист?
мне раньше показывали способ какузнать количество непустых строк.
9 — Метод Sheets(НомерЛиста)
КоличествоЛистов=ВходExcel.Worksheets.Count;Для i=1 По КоличествоЛистов Цикл
не сегодня чета нету умных…
Мля, итак уже все разжевал…НужныйЛист=ВходExcel.Worksheets.Item(i);………и т.д.
Retкак узнать номер последней не пустой строки?
Я конечно привожу куски кода, который уже заточен под мои задачи, но из них вполне можно понять логику и использовать под себя.Когда сам писал это, не мало пришлось покапаться в доках, а тебе выкладываешь на тарелочке, а ты разобраться не можешь.За тебя-то никто не будет делать. Смотри, разбирайся и делай.
Мля…. я тащусь….НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel);——далее работаешь со значением———- и т.д. (шо тебе ящо конец цикла написать?)
короче ето делается так.=====================Процедура ЗагрузитьНажатие(Элемент)============================ето я чета туплю сегодняспасибо за ответ Ret-у
Cells(1,1).SpecialCells.Row -последняя не пустая строкаCells(1,1).SpecialCells.Column — последний не пустой столбеци еще выше я привел процеДУРУ ПроверкаБитыхСсылок(Ячейка) привел.Перед загрузкой если там ошибки, то на Значение = НужныйЛист.Cells(index,index2).Value 1С вылетает. Поэтому их надо обязательно отсечь!!!Не помню где это описано, но это известная весчь.
Тэги:
Комментарии доступны только авторизированным пользователям