Поля в SLK

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
maikl
Местный житель
Сообщения: 1503
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тверь

Поля в SLK

Сообщение maikl »

Выводим отчет в SLK, из линк-формы. Хотим ужать форму за счет полей, не получается. В офисе 2003 почему то установленные поля из линк-формы не переносятся в выходную форму.
Уже замучились.
В 2007 этой проблемы нет.
Может кто знает как решить ее в 2003 офисом?
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Поля в SLK

Сообщение Semi-bit »

Если вы хотите "ужать" высоту строк, должен вас огорчить - FCOM игнорирует информацию о ней. В выходном файле, если высота строк была задана специально, эти строки "сползут", поскольку из отчёта выкусывается программная часть, а эти строки никак не обрабатываются. Выход - удалить все записи вида F;M из исходника. Эксель автоматически установит нужную высоту.
Если же надо "ужать" столбцы, поэкспериментируйте с секцией F;W. В каждой из таких строк первое число указывает начальный столбец, второе - конечный, а 3-е - ширину столбца в точках.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Поля в SLK

Сообщение edward_K »

в общеми лучше сразу в Excel чем мучится :). Из текстовой формы это сделать достаточно легко.
maikl
Местный житель
Сообщения: 1503
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тверь

Re: Поля в SLK

Сообщение maikl »

Нет, мы хотим уменьшить поля листа (отступы справа и слева) т.е аналогично параметрам страниц.
Не ячеек, а листа.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Поля в SLK

Сообщение edward_K »

slk это не тот формат который позволяет это делать. Более того и макрос тяжко запустить. Хотя я когда-то ложил шаблон в автозагрузку, который при старте Excel смотрел какая книга открылась и если встретил нужную производил над ней манипуляции - но в Excel нормальный проще 8)
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Поля в SLK

Сообщение Semi-bit »

Ну, SLK позволяет изменить параметр названия генератора этого самого слк, отсюда можно плясать...
Например,
ID;PWXL;N;E
можно заменить на
ID;PSLKMEGATOOL;N;E
а шаблон или надстройка будет сначала читать поступившие slk в сыром режиме, и в зависимости от наличия метки делать свою "грязную" работу :)
C RTF ещё проще такое сделать, благо он поддерживает переменные Ворда.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Поля в SLK

Сообщение spark »

Semi-bit писал(а):Ну, SLK позволяет изменить параметр названия генератора этого самого слк, отсюда можно плясать...
Например,
ID;PWXL;N;E
можно заменить на
ID;PSLKMEGATOOL;N;E
а шаблон или надстройка будет сначала читать поступившие slk в сыром режиме, и в зависимости от наличия метки делать свою "грязную" работу :)
C RTF ещё проще такое сделать, благо он поддерживает переменные Ворда.
А можно поподробней? Ничего не понял, но чувствую что очень нужная мне весчЪ! =)
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Поля в SLK

Сообщение RAJAH »

spark писал(а):Ничего не понял, но чувствую что очень нужная мне весчЪ! =)
:D http://www.youtube.com/watch?v=lavMXK7AuXA
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Поля в SLK

Сообщение spark »

RAJAH писал(а):
spark писал(а):Ничего не понял, но чувствую что очень нужная мне весчЪ! =)
:D http://www.youtube.com/watch?v=lavMXK7AuXA
Да, Да!! Мне пожалуйста обе буквы! :D
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Поля в SLK

Сообщение Semi-bit »

Хм, не знаю, каким боком сюда затесался Семён Фарада, дома ссылку посмотрю (на работе нормального инета нету, а тот что есть, тает с неимоверной скоростью)...

spark, надо ваш документик открыть, и заменить в нём самую первую строку вышеописанным способом. Потом можно этот файл скомпилировать випом. Затем сделайте шаблон xlt (или xltm, если у вас Excel 2007) . В шаблоне сделайте макрос и настройте его так, чтобы он запускался при открытии рабочей книги. В макросе уже можно сделать проверку на наличие вашей пометки.
Я вместо шаблонов предпочитаю делать общие надстройки Office средствами VSTO, потому что её достаточно просто установить на произвольный компьютер, и не надо заморачиваться со способом отлова события открытия документа.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: Поля в SLK

Сообщение spark »

Semi-bit писал(а):Хм, не знаю, каким боком сюда затесался Семён Фарада, дома ссылку посмотрю (на работе нормального инета нету, а тот что есть, тает с неимоверной скоростью)...

spark, надо ваш документик открыть, и заменить в нём самую первую строку вышеописанным способом. Потом можно этот файл скомпилировать випом. Затем сделайте шаблон xlt (или xltm, если у вас Excel 2007) . В шаблоне сделайте макрос и настройте его так, чтобы он запускался при открытии рабочей книги. В макросе уже можно сделать проверку на наличие вашей пометки.
Я вместо шаблонов предпочитаю делать общие надстройки Office средствами VSTO, потому что её достаточно просто установить на произвольный компьютер, и не надо заморачиваться со способом отлова события открытия документа.
Что только люди не придумают. Как это все приходит вам в головы?? =))

А можно пример макроса, который определяет нужный slk?
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

Re: Поля в SLK

Сообщение Semi-bit »

spark, конечно, можно! На VBA затрудняюсь привести код, там событие открытия документа приложением сложно отловить, поэтому решение будет на C#. Если Visual Studio у вас нет, могу прислать исходники полностью, а здесь покажу саму суть.

Подготовка:
  1. Создать общую надстройку;
  2. Выбрать Excel на вкладке "Приложения" мастера создания надстройки;
  3. Добавить ссылки на сборки Microsoft.Office.Interop.Excel, System.Windows.Forms;
  4. Поместить такой код в обработчик Connect:

    Код: Выделить всё

    using XL = Microsoft.Office.Interop.Excel;
    using System.Windows.Forms;
    using System.IO;
    
    public Connect()
    {
        XL.Application app = new XL.Application();
        app.WorkbookOpen += new XL.AppEvents_WorkbookOpenEventHandler(app_WorkbookOpen);
    }
После подготовки в функции app_WorkbookOpen пишете такой код:

Код: Выделить всё

void app_WorkbookOpen(XL.Workbook Wb)
{
    if (Wb.FileFormat == XL.XlFileFormat.xlSYLK)
    {
        StreamReader sr = new StreamReader(Wb.FullName);
        string header = sr.ReadLine();
        sr.Close();
        if (header.Contains("SLKMEGATOOL"))
        {
            MessageBox.Show("Открыта нужная книга!");
            XL.Worksheet activeSheet = Wb.ActiveSheet;
            activeSheet.PageSetup.LeftMargin = Wb.Application.InchesToPoints(0.25);
            activeSheet.PageSetup.RightMargin = Wb.Application.InchesToPoints(0.25);
            activeSheet.PageSetup.TopMargin = Wb.Application.InchesToPoints(0.75);
            activeSheet.PageSetup.BottomMargin = Wb.Application.InchesToPoints(0.75);
            activeSheet.PageSetup.HeaderMargin = Wb.Application.InchesToPoints(0.3);
            activeSheet.PageSetup.FooterMargin = Wb.Application.InchesToPoints(0.3);
        }
    }
}
Теперь, подключив эту надстройку к Экселю (для этого автоматически создаётся установщик), мы сможем проверять, какая книга поступила на открытие. Небольшой минус - необходимо установить её на каждый компьютер. Впрочем, если у вас правильно настроен домен, проблем возникнуть не должно.
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
Ответить