On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 4144
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.04.15 22:50. Заголовок: Вопрос по Excel ?


Всем привет.
Вопрос к знатокам Excel-я, как подсчитать сумму ВСЕХ значений с минусом и с плюсом ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 153 , стр: 1 2 3 4 5 6 7 8 All [только новые]


администратор




Пост N: 1810
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.11.21 16:33. Заголовок: Haz пишет: Согласен..


Haz пишет:

 цитата:
Согласен с твоим спинным мозгом, не поспоришь


Забыл написать.
Свойство NAME у объекта книга только чтение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7132
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.21 19:22. Заголовок: alex_II пишет: Печа..


alex_II пишет:

 цитата:
Печатая отчёты через Excel потребовалось поменять имя книги Книга1 на своё,
но так и не разобрался как.
Подскажите, кто сталкивался с этой задачей.



Тема Снова EXCEL (продолжение)
http://clipper.borda.ru/?1-4-0-00001115-000-260-0-1628243986
Вот с этим я разобрался:
 
Сделал тест, кому будет интересно:
oExcel:WorkBooks:Add()
oExcel:Visible := .T.
oBook := oExcel:ActiveWorkBook
oSheet := oExcel:ActiveSheet()

oSheet := oBook:Sheets(2)
oSheet:name := "МОЁ_НЕ_ТРОГАТЬ!" // имя листа изменить

nCnt := oBook:Sheets:Count // количество листов в книге
cMsg := "Количество листов в книге = " + HB_NtoS(nCnt) + ";"

FOR EACH oSheet IN oBook:WorkSheets
cMsg += oSheet:Name + ";"
NEXT

cMsg := StrTran(cMsg, ";", CRLF )
MsgInfo(cMsg)

oSheet:Cells:Font:Name := "Arial"
oSheet:Cells:Font:Size := 12

oSheet:Cells( 3, 1 ):Value := "City:"
oSheet:Cells( 3, 2 ):Value := "Moskow"
....... // далее запись во 2 лист

oSheet:Visible := .F. // скрыть лист 2

oBook:Sheets(3):Select() // перейдём на 3 лист
oSheet := oExcel:ActiveSheet()
oSheet:Visible := .F. // скрыть лист 3

oBook:Sheets(1):Select() // вернутся на 1 лист
oSheet := oExcel:ActiveSheet()
oSheet:name := "Мой_отчёт" // имя листа изменить
...........


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7485
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.11.21 19:47. Заголовок: Haz пишет: Свойство..


Haz пишет:

 цитата:
Свойство NAME у объекта книга только чтение


Но если хочется сменить заголовок окна Excel то можно сделать так.
 
local oExcel, oWorkBook, oWindows
local nI, nCount, w , oSheet
REQUEST HB_CODEPAGE_RU1251
hb_cdpSelect( "RU1251" )

oExcel := win_oleCreateObject( "Excel.Application" )

if !empty(oExcel)

? oExcel:version
oSheet := oExcel:ActiveSheet()
? oExcel:hwnd
oWindows := oExcel:Windows()
oWorkBook := oExcel:WorkBooks:Add()

nCount := oWindows:Count
oWindows[1]:Caption := "Блабла" + hb_NtoS( nCount )

for each w in oWindows
? w:caption
? oExcel:hwnd
next

oExcel:Visible := .T.

else
? "Error: MS Excel not available. [" + win_oleErrorText() + "]"
endif




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7133
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.11.21 19:56. Заголовок: Dima пишет: Но если..


Dima пишет:

 цитата:
Но если хочется сменить заголовок окна Excel то можно сделать так.


Классно ! А я не знал что так тоже можно !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1811
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.11.21 22:16. Заголовок: Dima пишет: Но если..


Dima пишет:

 цитата:
Но если хочется сменить заголовок окна


Полезно

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 159
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 21.11.21 06:13. Заголовок: Как переименовать книгу?


Всем спасибо за внимание, но похоже проблема решения не имеет.
Вариант через сохранение файла не подходит.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1730
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.11.21 13:06. Заголовок: alex_II пишет: Всем..


alex_II пишет:

 цитата:
Всем спасибо за внимание, но похоже проблема решения не имеет.
Вариант через сохранение файла не подходит.



Из Википедии (куда без нее )
Решение — завершение процесса выбора, которое обычно (иногда неправильно) фиксирует процесс во времени.
Принятие решения рассматривается как когнитивный процесс, результатом которого является выбор мнения или курса действий среди нескольких альтернативных возможностей.

Еще одна альтернативная возможность с использованием пользовательского шаблона


 цитата:
procedure main(...) 

local oExcel, oWorkBook
local cTPath
local cTDir := "tmplts", cTName := "EBook.xltx"

oExcel := win_oleCreateObject("Excel.Application")

if !empty(oExcel)
? oExcel:Version

cTPath := hb_DirSepAdd(hb_DirBase() + cTDir)

oWorkBook := oExcel:WorkBooks:Add(cTPath + cTName)

oExcel:Visible := .T.
else
? "Error: MS Excel not available. [" + win_oleErrorText() + "]"
endif

return NIL




В рабочем каталоге есть вложенная папка tmplts, а в ней - шаблон EBook.xltx.
Открытая книга будет иметь имя EBook1.

Как создать шаблон в Эксель думаю знают все.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1812
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.11.21 17:25. Заголовок: Петр пишет: В рабоч..


Петр пишет:

 цитата:
В рабочем каталоге есть вложенная папка tmplts, а в ней - шаблон EBook.xltx.
Открытая книга будет иметь имя EBook1.


Есть такой вариант, но если проблема только уйти от имени Книга(1...n) на свое, то ничем не отличается от сохранения. Этот Ебук тоже лежит на диске, а если хочется иметь множество своих имен , то и шаблонов будет много.
alex_II пишет:

 цитата:
Вариант через сохранение файла не подходит.


По мне, проще сохранять при старте с любым именем и тереть при завершении , если нужно то сохранять результат работы уже куда и как положено. Хотя чем имя Книга1 не устраивает то ? и почему сохранение не подходит ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1731
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.11.21 18:55. Заголовок: Haz пишет: Есть так..


Haz пишет:

 цитата:
Есть такой вариант, но если проблема только уйти от имени Книга(1...n) на свое, то ничем не отличается от сохранения.


Вы ничего не понимаете, ЭТО ДРУГОЕ!

А если серьезно, то alex_II пишет:

 цитата:
Печатая отчёты через Excel потребовалось поменять имя книги Книга1


Вот отчеты, особенно сложные, для меня удобнее писать через шаблоны.
Формулы, макросы, диаграммы..

Haz пишет:

 цитата:
Этот Ебук тоже лежит на диске, а если хочется иметь множество своих имен , то и шаблонов будет много


Разные отчеты - разные шаблоны. А если что, то и Ебук можно переименовывать перед употреблением.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1813
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.11.21 20:07. Заголовок: Петр пишет: Вы ниче..


Петр пишет:

 цитата:
Вы ничего не понимаете, ЭТО ДРУГОЕ!

Для чего нужны шаблоны я догадываюсь уже второй десяток лет хотя сам почти не использую, впрочем как и ole из за его тормознутости ( при выводе нескольких тысяч строк реестра можно идти спать )
Насколько я понял, Alex_ll их не использует, а вот тему с сохранением я не понял. Почему она не подходит не пойму. Создал Эксель, сохранил сразу как надо, через ту же Олю заполнил, если нужно пересохранил, не нужно удалил.
Единственное что может доставить неудобство, так это то, что при закрытии программы Эксель еще висит у пользователя в работе. Но ведь сохраняем изначально во временной папке и при старте просто трем в ней все , что удается стереть ( можно с проверкой на блокировку )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7486
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.11.21 20:27. Заголовок: Haz пишет: при выво..


Haz пишет:

 цитата:
при выводе нескольких тысяч строк реестра можно идти спать


Ты не прав Игорь , тоже был такой тормозок и решил его с помощью
oRange:Value := __oleVariantNew( WIN_VT_VARIANT, ......
ну ты понял :)
Сейчас отчётик строится на раз два , два даже произнести не успеваю ))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7487
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.11.21 20:57. Заголовок: Haz 100 000 строк н..


Haz
100 000 строк нормально будет ?
 
#include "hbole.ch"

local oExcel, oWorkBook, oWindows
local nI, nCount, w , oSheet
local orange,orange1,orange2
local xlsarrrow:={}
local nrows:=100000

REQUEST HB_CODEPAGE_RU1251
hb_cdpSelect( "RU1251" )

oExcel := win_oleCreateObject( "Excel.Application" )

if !empty(oExcel)

oWorkBook := oExcel:WorkBooks:Add()
oSheet := oExcel:ActiveSheet()

oRange := oSheet:Range(oSheet:Cells(1, 1), oSheet:Cells(nrows, 2))
oRange1 := oSheet:Range(oSheet:Cells(1, 1), oSheet:Cells(nrows, 1))
oRange2 := oSheet:Range(oSheet:Cells(1, 2), oSheet:Cells(nrows, 2))

for ni=1 to nrows
aadd(xlsarrrow,{hb_ntos(ni),hb_milliseconds()})
next

oRange:Value := __oleVariantNew( WIN_VT_VARIANT, xlsarrrow, nrows, 2 )
oRange2:Font:Size := 12
oRange1:Font:Size := 8
oRange2:NumberFormat:="# ##0"
oExcel:Visible := .T.

else
? "Error: MS Excel not available. [" + win_oleErrorText() + "]"
endif



PS
Мне кажется что hbxlsxml.lib будет нервно курить в сторонке при таком объеме данных + форматирование

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1814
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.11.21 21:57. Заголовок: Dima пишет: тоже бы..


Dima пишет:

 цитата:
тоже был такой тормозок и решил его с помощью
oRange:Value := __oleVariantNew


В километровых отчетах финансисты желают видеть формулы а не значения. И базовые параметры ( курсы, пошлины, ставки налогов и пр выносить в шапку )
Для таких игр вариант-массив не катит.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7488
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.11.21 22:00. Заголовок: Haz формулы (я не ю..


Haz
формулы (я не юзал) можно в массив загнать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1815
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.11.21 22:00. Заголовок: Dima пишет: Мне каж..


Dima пишет:

 цитата:
Мне кажется что hbxlsxml.lib будет нервно курить в сторонке при таком объеме данных + форматирование


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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4049
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.11.21 08:47. Заголовок: alex_II пишет: Всем..


alex_II пишет:

 цитата:
Всем спасибо за внимание, но похоже проблема решения не имеет.
Вариант через сохранение файла не подходит.



Есть простой критерий, чтобы определить, есть решение или нет.
Открываем Excel, создаем новую книгу. Меняем название книги без ее сохранения.
Что, не получается ? Так отож

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4050
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.11.21 08:52. Заголовок: Dima пишет: формулы..


Dima пишет:

 цитата:
формулы (я не юзал) можно в массив загнать ?



В документации написано, что можно
Для Range:Formula допускается присвоение массива:

If the range is a one- or two-dimensional range, you can set the formula to a Visual Basic array of the same dimensions. Similarly, you can put the formula into a Visual Basic array.
Setting the formula for a multiple-cell range fills all cells in the range with the formula.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7134
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.11.21 19:20. Заголовок: Dima пишет: формулы..


Dima пишет:

 цитата:
формулы (я не юзал) можно в массив загнать ?


Смотри пример MiniGUI\SAMPLES\Advanced\Tsb_Export_2
Формулы легко загоняются в массив, а далее в эксель:


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4051
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.11.21 10:15. Заголовок: При работе со значен..


При работе со значениями/формулами как говорится "есть ньюанс"
Ячейка может иметь либо значение, либо формулу
Если заполнять Range массивом значений, то даже если в массиве в тех ячейках, в которых есть формулы стоит nil, формулы будут снесены

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 326
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 23.11.21 12:43. Заголовок: Dima пишет: oRange:..


Dima пишет:

 цитата:
oRange:Value := __oleVariantNew( WIN_VT_VARIANT, ......



этот механизм работает в OpenOffice ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 153 , стр: 1 2 3 4 5 6 7 8 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 605
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет