Дело в том, что это зарплатный реестр и его форму заказывает банк, как ему удобно для дальнейшей обработки. А эксель портит только числа, если добавлять какой-нибудь символ, то все получается в текстовом виде и не портится. Просто банк перестали устраивать пробелы.
Попробовать писать в эксель не через SLK а через функции.
Я правда этим сам не занимался.
Если есть функции установки формата ячеек, то надо ячейку делать текстовой, потом уже функцией doubletostr(num,'[|-]366666666666666666666') писать в ячейку строку.
Или договариваться с банком, почему их перестал устраивать пробел? Может легче их программистам при анализи добавлять пробел у себя в программах?
правильней будет переделать через xl функции.
как вариант, можно предложить написание макроса который будет проверять заголовок файла и по такому то заголовку резать пробелы в колонке. Приучить пользователя запустить макрос не так сложно - особено если вы его подложите в виде xlt файла в startup Excel. В теории можно наверное сделать автообработку при открытии файла с таким то именем.
не когда бы не подумал что эта ситуация может быть такой тупой.
может быть тогда сбрасывать данные в dbf и для особо одаренных сделать этому дбфу расширение slk.правда нарисовать ничего не получится.
Идея с DBF не верна. Нужно получить отчет в определенном виде, а не виде бесссысленных записей с полями.
По поводу макросов, тоже проблема, когда стартовать макрос? Дело в том, что SLK формируется не посредственно записью в файл, а потом следует только открытие файла в Excel.
Идея с RTF нормально, но подойдет ли она?
Кстате, сталкивался с такой же подобной проблемой уже сталкивался не раз, но клиента устраивало добавление знака " ".
как-то делал для xl, вроде нормально было, попробуй:
if not xlSetCellStringValue(string(t1.katmc.nrec)+'d',npp,20,npp,20) {xlKillExcel;exit}
правда буковку нужно будет отбрасывать
stray писал(а):как-то делал для xl, вроде нормально было, попробуй:
if not xlSetCellStringValue(string(t1.katmc.nrec)+'d',npp,20,npp,20) {xlKillExcel;exit}
правда буковку нужно будет отбрасывать
Сталкивался с такой проблемой. Надоть было выводить инвентарные номера в отчет, а SLK эти инвентарные номера преобразовывал в цифири без ноликов в начале. C помощью xl-функций выводилось нормально.
Была проблема и с выводом в SLK-отчеты NREC-ов. Excel их действительно режет. Выходом может послужить вывод NREC-а не в десятичном виде, а в шестнадцатеричном. Например не KatOS.nRec, а string(KatOS.nRec,0,0).
Нам же нужно было получать NREC-и в десятичном виде. Я лично вышел из положения тем, что в разделе Fields вывожу не само значение NREC-а, а выражение пробел + NREC:
' ' + KatOS.nRec
Прятать колонки нельзя, формат файла задан очень жестко. Поставил пробел после значения, банк говорит, что это их должно устроить, так как они тупо закачивают 20 знаков, пробел останется лишним.