Показаны сообщения с ярлыком Excel. Показать все сообщения
Показаны сообщения с ярлыком Excel. Показать все сообщения

четверг, 17 мая 2018 г.

Группировка данных в файле Excel из 1С 7.7

Задача: Есть файл Excel необходимо добавить в него структуру из 1С.


Заголовок           
<
    <    Проверка 1   
        - строка 1
        - строка 2
    >       
    <    Проверка 2   
        - строка 1
        - строка 2
    >       
>      
     


Решение:

Эксель = СоздатьОбъект("Excel.Application");
ПутьКФайлу = "e:\test\test.xls";
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Лист = Книга.WorkSheets(1);
Лист.UsedRange.ClearOutline();   // убираем все группировки на листе
КоличествоСтрок = Лист.UsedRange.Rows.Count;
Для кол=1 По 2 Цикл        // разметка у нас в 1 и 2-й колонке
    Для стр=3 По КоличествоСтрок Цикл    // 1 и 2 строка заголовки, пропускаем
        зн = СокрЛП( Лист.Cells(стр, кол).Value );
        Если зн="<" Тогда                // начало группы
            старт = СокрЛП(стр+1);
        КонецЕсли;
        Если зн=">" Тогда                // конец группы
            финиш = СокрЛП(стр - 1);
            Лист.Rows(старт+":"+финиш).Group();
        КонецЕсли;
    КонецЦикла;
КонецЦикла;
 

Лист.Outline.ShowLevels(1);    // свернём

Эксель.ActiveWorkbook.Save();
Эксель.ActiveWorkbook.Close();
Эксель.Quit();
Эксель = "";   


По мотивам:
https://www.planetaexcel.ru/techniques/9/47/
http://vip1c.ru/page/1s-i-excel-tablica-funkcij-excel-dostupnyh-iz-1s
http://citforum.ru/programming/windows/excel_faq/part2.shtml#2.22
http://exp-1c.narod.ru/articles/articl01.htm

вторник, 24 октября 2017 г.

Ошибка открытия файлов Exсel, загруженных из интернет

Проблема: При открытии файлов, загруженных, например, из хранилища BitBucket, Exсel 2013/2016 выдаёт ошибку "Файл поврежден, поэтому его нельзя открыть".

Решение: Все загружаемые файлы из интернета имеют блокировку в "Свойства":

Для работы необходимо его предварительно разблокировать, нажав на кнопку "Разблокировать".

Источник:
Ошибка при открытии файлов Exсel
2010 - [решено] Не открываются файлы, скачанные с интернета

Оттуда же - вдруг кому не помогло, можно попробовать изменить доверенные расположения.

пятница, 3 июля 2015 г.

Заполнение шаблонов Excel из 1С

Требуется: Заполнить готовую книгу Excel с кучей формул и форматированием из 1С.

Решение: Просматриваем из 1С все листы, и в ячейки с примечаниями (комментариями)  записываем результат формулы, указанные в этих же ячейках.

Т.е. нашли ячейку с примечанием - прочитали в ней выражение, вычислили с помощью 1С, и записали обратно в ячейку.


Перебор ячеек с примечаниями - только чтобы ускорить просмотр книги, не перебирать все ячейки в ней.

Идея: http://infostart.ru/public/16466/

Текст примера под катом, функция ЗначениеПоказателя() и переменная ФайлШаблона - в фрагменте не описаны.

среда, 20 августа 2014 г.

Проблема сохранения в Excel больших таблиц 1С 7.7

Проблема: При попытке сохранить в Excel большой таблицы 1С "подвисает", нагружая процессор на 100%.
Под "большой" имеется в виду таблица 5-6 тыс. строк и более. Сохранение при этом может идти 30-40 минут.

Теория, решение, технические подробности от romix: Исправление ошибки при экспорте в Excel (патчинг Moxel.dll)

Еще одна реализация решения:  [MXLtoXLS] Сохранение больших таблиц в EXCEL

Копия статьи от ув. romix на память:

"Крякозябры" при копировании данных из 1С 7.7 через буфер обмена

Проблема: Выделяем любой текст в 1С, делаем CTRL+C, а вот при вставке в любую другую программу (Word, Excel) - получаем нечитаемые символы.

Например:

  • текст в 1С: "Покупайте наших слонов"
  • текст после вставки в другую программу: "Ïîêóïàéòå íàøèõ ñëîíîâ"

Причина: 1С 7.7 не поддерживает Unicode, и когда мы копируем текст из приложения, которое не поддерживает Unicode, в буфер обмена попадают символы в неправильной кодировке, если раскладка клавиатуры при копировании установлена не на русский язык.

Решение: Прежде чем жать CTRL+C, убедиться что на индикаторе клавиатуры отображается "RU"

Проблема сохранения таблицы из 1С 7.7 в формате Excel: превышено максимальное количество столбцов

Проблема: сохраняем из 1С 7.7 таблицу в формате Excel. А при открытии в MS Excel получаем сообщение: "Невозможно прочитать файл", и сразу еще одно "В книге 'Название книги' обнаружено содержимое, которое не удалось прочитать. Попробовать восстановить содержимое книги?"

Причина: Превышено максимальное количество столбцов на листе (255), т.к. 1С 7.7 сохраняет в старом формате - до 2007.

Решение: 
1. Не делать такие монструозные таблицы :)
2. Копировать данные через буфер обмена.
3. Выгружать плоскую таблицу для дальнейшего создания сводной.
4. Выгружать в Excel напрямую через OLE.
5. Использовать другой формат сохранения, например, HTML.

В общем, вариантов масса, в каждом случае надо выбирать наиболее подходящий.

пятница, 30 мая 2014 г.

Удаление всех картинок с листа Excel

Дано: В 1С создан многостраничный документ Excel, размер файла за 100 мегабайт, т.к. на каждой странице повторяется логотип компании.
Решение: Создать и запустить в редакторе VB следующую процедуру для активного листа:
 
Sub УдалениеКартинок()
    For Each pic In ActiveSheet.Shapes
        pic.Delete
    Next pic
End Sub
 
P.S. Проверено на 2003 Excel. 

вторник, 29 октября 2013 г.

1С и Excel

Нашел вот здаесь http://exp-1c.narod.ru/articles/articl01.htm - отличную статью про связку
Excel и 1С. Утяну к себе кусочек, на всякий случай.

пятница, 14 июня 2013 г.

1С и Excel: общие сведения и методы


Таблицы 1С и Excel.
Многие пользователи для удобства работы сохраняют таблицы 1С (печатные формы) в формате Excel (*.xls). После чего в полученном файле делают различные группировки, сортировки, вычисления и т.п.
На сайте 1С (www.1C.ru) есть полезная программка, которая дает возможность открывать таблицы 1С в Excel и сохранять лист Excel как таблицу 1С. Это пригодится в том случае, если таблицу 1С не сохранили в формате Excel, а на том компьютере, где нужно открыть эту таблицу не установлена 1С.
Замечание: В Excel разделителем дробной части считается символ ",". Поэтому перед сохранением таблицы 1С в формате Excel замените в ней другой разделитель (например ".") на ",". Иначе в Excel с этими числами не удастся произвести вычисления, или они вообще не будут отображаться как числа. Например, в таблице 1С "15.2" отобразится в Excel как "15.фев".

Получение данных из Excel.
Доступ из 1С к Excel производится посредством OLE. Например, код
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() +
" Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;

позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.
Открытие книги (файла):
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу - полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.
Получение значения ячейки листа:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.

Вывод данных в Excel.
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() +
" Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;

Книга = Эксель.WorkBooks.Add();
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист = Книга.WorkSheets(НомерЛиста);
либо добавить в книгу новый лист, если необходимо:
Лист = Книга.Sheets.Add();
Следующим шагом будет установка значения ячейки:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()
+" Файл не сохранен!");
Возврат;
КонецПопытки;

ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов \ / : * ? " > < |.

Часто используемые методы для чтения/установки значений в Excel.
Эксель = СоздатьОбъект("Excel.Application"); Получение доступа к приложению Excel.
Эксель.Visible = Видимость; 0 - Excel не виден, 1 - виден.
Книга = Эксель.WorkBooks.Add(); Создание новой книги (файла) Excel.
Книга.SaveAs(ИмяФайла); Сохранение книги Excel.
Лист = Книга.WorkSheets.Add(); Добавление нового листа в книгу.
Книга = Эксель.WorkBooks.Open(ИмяФайла); Открытие существующей книги (файла) Excel.
Лист = Книга.WorkSheets(НомерЛиста); Установка листа в качестве рабочего с номером НомерЛиста.
Лист.Name = ИмяЛиста; Задание рабочему листу имени ИмяЛиста
Лист.PageSetup.Zoom = Масштаб; Задание параметра страницы "Масштаб" (от 10 до 400).
Лист.PageSetup.Orientation = Ориентация; Ориентация: 1 - книжная, 2 - альбомная.
Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры); Задание левой границы (в сантиметрах).
Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры); Задание верхней границы (в сантиметрах).
Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры); Задание правой границы (в сантиметрах).
Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры); Задание нижней границы (в сантиметрах).
Лист.Columns(НомерКолонки).ColumnWidth = Ширина; Задание ширины колонке.
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; Ввод данных в ячейку.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; Установка шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; Установка размера шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; 1 - жирный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; 1 - наклонный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; 2 - подчеркнутый, 1 - нет.
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; Установка формата данных ячейки.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; Установка рамок ячейки. 1 - тонкая сплошная.

(С) http://exp-1c.narod.ru/articles/articl01.htm

Ошибка при подключении Excel к OLAP

Проблема:
Возникает ошибка при подключении Excel'ем 2010-2013 к OLAP. Куб развернут в Analysis Services 2005.

При попытке обновления данных возникает ошибка - "The LocaleIdentifier property is not overwritable and cannot be assigned a new value"
(Свойство LocaleIdentifier недоступно для перезаписи. Ему не может быть присвоено значение.) 

Решение:
Google по тексту ошибки рекомендует экспериментировать с сочетанием установок языка на закладках "Regional Options" и "Advanced" в "Regional and Language Options".
[controlPanel]-[regional settings]-English (United States)

Альтернативное решение: в строке подключения дополнительно прописывать русскую (или другую) локализацию следующим образом:
Extended Properties="Locale=1049"
 
Несколько ссылок по теме: 
http://social.msdn.microsoft.com/Forums/ru-RU/sqlanalysisservices/thread/b016735e-9630-4855-b0c5-061895b9adcd
http://social.technet.microsoft.com/Forums/ru-RU/sqlanalysisservices/thread/8a1800e1-3500-4764-b175-0daf2c15c192 
http://www.sql.ru/forum/567949/oshibka-pri-otkrytii-svodnoy-tablicy-v-excel2003
http://www.dstewart.com.au/2012/08/xml-for-analysis-parser-localeidentifier-property/
http://venkattechnicalblog.blogspot.com/2012/03/fixxml-for-analysis-parser.html

четверг, 23 мая 2013 г.

Не работает заливка ячеек в MS Excel

Описание и симптомы:
Не работает заливка ячеек в MS Excel 2003.
Заливка ячеек и цвет шрифта наблюдается только в режиме просмотра и во время ввода данных, а после ввода все становится черно-белым.
Условное форматирование 100% не причем
Если зайти в систему под другим пользователем, всё нормально.
Переустановка Excel не помогает.

Решение:
Отключаем "Панель управления > Специальные возможности > Экран > Высокая контрастность"

А первый раз решил проблему удалением профиля пользователя :)