Автор | Сообщение |
|
| |
Пост N: 2372
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL (продолжение)
Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|
|
| |
Пост N: 7673
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.07.22 21:24. Заголовок: Что то не могу найти..
Что то не могу найти на форуме , что бы преобразовывать RC формат к ABCD и тд То есть имею точные координаты строка и колонка (числа) , нужно преобразовать к формату не RC Ткните носом плиз PS Имею цифры в колонках 1 2 и 3 и в 4 нужно подбить сумму , как это сделать имея лишь номера колонок и столбцов через СУММ ?
|
|
|
|
| постоянный участник
|
Пост N: 4142
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.07.22 22:57. Заголовок: Dima пишет То есть и..
|
|
|
|
| |
Пост N: 7674
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.07.22 08:18. Заголовок: SergKis Спасибо :s..
SergKis Спасибо
|
|
|
|
| Администратор
|
Пост N: 4081
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.09.22 09:03. Заголовок: Имеется числовая кол..
Имеется числовая колонка, в ячейках которой может стоять разный формат, например 00000001 или 0000000001 если выбирать oCell:Value, то результат будет одинаковый: 1.00 Можно ли выбрать символьное преставление ячейки, или надо самому выбирать oCell:NumberFormat и дальше его анализировать и самому преобразовывать ?
|
|
|
|
| Администратор
|
Пост N: 4082
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.09.22 09:37. Заголовок: ага, есть еще свойст..
ага, есть еще свойство Text, там как раз то, что нужно Жаль, нельзя выбрать Text для Range, как Value, а там надо выбирать тысячи строк, будет мееедленноооо
|
|
|
|
| |
Пост N: 7686
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.09.22 11:27. Заголовок: Range......:NumberFo..
Range......:NumberFormat:="@" не то ?
|
|
|
|
| Администратор
|
Пост N: 4083
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.09.22 12:13. Заголовок: Там в столбце 8700 я..
Там в столбце 8700 ячеек, с разными комбинациями NumberFormat есть 00000000 есть 0000000000 и еще много чего есть и строковые. Это грубо говоря код предприятия для налогового отчета. Там и физлица, и юрлица, и паспортные данные встречаются, это будут строки, а не числа Да я уже опрашиваю свойство Text, по скорости намного медленнее будет, но переживут, по другому никак. Ни NumberFormat, ни Text для Range не возвращает массив как Value
|
|
|
|
| постоянный участник
|
Пост N: 4149
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.09.22 12:29. Заголовок: Pasha пишет по друго..
Pasha пишет " "+"000000000" // т.е. непрерывный пробел добавляем или "000000000"+" " PS можно repl(" ", 10)+<значение строковое> <значение строковое 1>+repl(" ", 10)+<значение строковое 2>
|
|
|
|
| Администратор
|
Пост N: 4084
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.09.22 12:57. Заголовок: У меня противоположн..
У меня противоположная задача, не сформировать таблицу в Excel, а выбрать данные из сформированной сторонним ПО, или просто заполненной. А там формат ячеек может быть каким угодно
|
|
|
|
| постоянный участник
|
Пост N: 4150
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.09.22 13:50. Заголовок: Можно формировать xm..
Можно формировать xml файл из excel (делает быстро) и читать его, то же быстро и форматы данных от базы, т.е. свои
|
|
|
|
| Администратор
|
Пост N: 4085
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.10.22 10:47. Заголовок: Передаю объект TBrow..
Передаю объект TBrowse в Excel, имеется колонка типа дата Делаю: oCell:Value := d или oRange:Value := {...} где в массиве ячейки этого столбца имеют тип Date NumberFormat не устанавливаю В это случае Excel сам ставит формат ячейки Дата, и правильно передает и отображает значение Но у одного заказчика после недавно переустановленного Excel 2010 формат ячейки остается Общий, и значение отображается неправильно - там целое число Может в Excel есть какая-то настройка, чтобы он устанавливал формат ? С наверное сотнями пользователей с разными версиями Excel от 2003 до 2019 за десятки лет такой проблемы не было, с одним возникло Может дело в региональных стандартах ? Смотрю в Excel Параметры - Дополнительно - Использовать системные разделители - Галочка стоит. Непонятно
|
|
|
|
|
| |
Пост N: 1852
Зарегистрирован: 20.02.11
|
|
Отправлено: 12.10.22 11:29. Заголовок: Проверьте что устано..
Проверьте что установлено в стилях ячеек у этого пользователя. Вкладка главная -> стили -> стили ячеек-> обычный-> правый клик-> изменить. Ps Однозначно решает вопрос предварительная установка numberformat в ячейки. Для себя отказался от заполнения через ole, гоню выгрузку сначала в XML, а через ole дорисовываю красоту. Продукты микрософт очень любят подсунуть нежданчик на ровном месте.
|
|
|
|
| Администратор
|
Пост N: 4086
Зарегистрирован: 23.05.05
|
|
Отправлено: 20.10.22 13:08. Заголовок: мозги сломал, когда ..
мозги сломал, когда искал, почему oSheet:Columns(nCol):NumberFormat := "m/d/yyyy" не работает, хотя запись макросов дает такой именно это. надо так: oSheet:Columns(nCol):NumberFormat := "ДД.ММ.ГГГГ"
|
|
|
|
| |
Пост N: 7709
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.10.22 13:28. Заголовок: Pasha пишет: oSheet..
Pasha пишет: цитата: | oSheet:Columns(nCol):NumberFormat := "m/d/yyyy" |
| а я забил на фиг на такой формат и пишу так oSheet:Columns(nCol):NumberFormat :="@" oSheet:Cells( j, a ):Value:=" "+hb_dtoc(i,"DD.MM.YYYY")
|
|
|
|
| |
Пост N: 7764
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.06.23 17:51. Заголовок: Порча какая с Excel ..
Порча какая то с Excel Было oSheet:Range(osheet:cells(j,1),osheet:cells(j,4)):NumberFormat:={"@","@", "# ##0.00","# ##0.00"} Работает Решил отрицательные числа сделать красным и не пашет , падает Excel oSheet:Range(osheet:cells(j,1),osheet:cells(j,4)):NumberFormat:={"@","@", "# ##0.00;[Red]# ##0.00","# ##0.00;[Red]# ##0.00"} Как решить вопрос ?
|
|
|
|
| постоянный участник
|
Пост N: 7406
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.06.23 03:53. Заголовок: Я в 2015 году делал ..
Я в 2015 году делал вот так. // создаём окно ожидания с потоком WaitThreadCreate( 'Расчёт и вызов Excel ...' ) // Область с заполненными данными oRange := oExcel:ActiveCell:SpecialCells( 11 /*xlLastCell*/ ) nRowXls := oRange:Row // Последняя строка nColXls := oRange:Column // Последний столбец oSheet:Columns( 1 ):Autofit() oSheet:Cells[ 1, nRowXls + 1 ]:HorizontalAlignment := 4 // Выравнивание по правому краю ячейки oSheet:Cells[ 1, nRowXls + 1 ]:Font:ColorIndex := 3 // Шрифт красный oSheet:Cells[ 1, nRowXls + 1 ] := 'Итого сумма с минусом' oSheet:Cells[ 1, nRowXls + 2 ]:HorizontalAlignment := 4 oSheet:Cells[ 1, nRowXls + 2 ]:Font:ColorIndex := 5 // Шрифт синий oSheet:Cells[ 1, nRowXls + 2 ] := 'Итого сумма с плюсом' oSheet:Cells[ 1, nRowXls + 3 ]:HorizontalAlignment := 4 oSheet:Cells[ 1, nRowXls + 3 ] := 'Итого сумма' FOR nCol := 2 TO nColXls xValue := oSheet:Cells( 1, nCol ):Value IF 'OSTAT' $ xValue .OR. 'DOLG' $ xValue oSheet:Cells[ nCol, nRowXls + 1 ] := '=СУММЕСЛИ( R[-' + AllTrim( Str( nRowXls-1, 8) ) + ']C:R[-1]C; "<0" )' oSheet:Cells[ nCol, nRowXls + 1 ]:NumberFormat := '# ##0,00' oSheet:Cells[ nCol, nRowXls + 1 ]:Font:ColorIndex := 3 // Шрифт красный oSheet:Cells[ nCol, nRowXls + 2 ] := '=СУММЕСЛИ( R[-' + AllTrim( Str( nRowXls, 8) ) + ']C:R[-2]C; ">0" )' oSheet:Cells[ nCol, nRowXls + 2 ]:NumberFormat := '# ##0,00' oSheet:Cells[ nCol, nRowXls + 2 ]:Font:ColorIndex := 5 // Шрифт синий oSheet:Cells[ nCol, nRowXls + 3 ] := '=СУММ( R[-' + AllTrim( Str( nRowXls+1, 8) ) + ']C:R[-3]C)' oSheet:Cells[ nCol, nRowXls + 3 ]:NumberFormat := '# ##0,00' ENDIF IF 'DATE' $ xValue oSheet:Columns( nCol ):Autofit() ENDIF NEXT oSheet:Cells[ 2, nRowXls + 4 ]:Select() oExcel:Visible := .T. WaitThreadClose() // закрыть окно "ожидания" hWnd := oExcel:hWnd ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 BringWindowToTop( hWnd )
|
|
|
|
| |
Пост N: 7765
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.06.23 14:25. Заголовок: Andrey Это понятно ..
Andrey Это понятно что и так можно сделать , так и сделал. Не понятно почему Excel выдав в своем же макросе NumberFormat "# ##0.00;[Red]# ##0.00" , отказывается с ним работать через олю в Harbour
|
|
|
|
| постоянный участник
|
Пост N: 1645
Зарегистрирован: 27.01.07
|
|
Отправлено: 09.06.23 14:50. Заголовок: Вот тут https://supp..
Вот тут https://support.microsoft.com/en-us/office/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68 говорят, что надо как-то так: цитата: | To indicate that a number format will be applied only if the number meets a condition that you have specified, enclose the condition in square brackets. The condition consists of a comparison operator and a value. For example, the following number format will display numbers that are less than or equal to 100 in a red font and numbers that are greater than 100 in a blue font. [Red][<=100];[Blue][>100] |
|
|
|
|
|
| |
Пост N: 7766
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.06.23 15:50. Заголовок: PSP Спасибо , побед..
PSP Спасибо , победить не смог На удачу сделал так "# ##0.00;[Красный]# ##0.00" Блин , заработало Но так делать стрёмно , если у кого English Excel стоит. PS По идее в Excel должна быть переключалка языка для макросов , вот только где она живет.......надо поискать
|
|
|
|
| |
Пост N: 7810
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.09.23 14:49. Заголовок: Есть строка в таблиц..
Есть строка в таблице с группировкой , то есть слева от нее крестик , при нажатии на который раскроется еще скажем 20 строк. Группировка в строке делалась примерно так oSheet:Range(.........):Select() WITH OBJECT oExcel:Selection :Rows:Group() ENDWITH Задача вот всю эту строку с группировкой надо бы переместить скажем после 3 строки таблицы Excel Не пойму как это сделать. Кто то делал похожее ?
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|