Dzień dobry.
Przychodzę z może dziwnym pytaniem ale ot tego zależy czy poświęcę swój czas dla tego języka czy też odpuszczę i zostawię jak jest.
Więc do rzeczy.
W mojej firmie mam sporo ludzi i jednym z moich zadań jest pilnować ich dni pracy. Zrobiłem taki kalendarz w Excelu :
W Excelu wszystko śmiga, działa, ale jak wiadomo excel nie jest idioto odporny, a i dopisanie nowych funkcji jest kłopotliwe.
Oczywiście nie jest to tylko sam kalendarz gdzie sam coś sobie wstawiam, wszystko odbywa się prze formatki i VBA, oblicza mi ile ktoś pracował, ile ma urlopu, robi wydruki w wordzie, itp. no sporo tego jest, poświęciłem na ten projekt prawie 3 miesiące z poprawkami.
Czy ktoś z Was wie gdzie znaleźć jakaś kontrolkę lub coś co by mnie naprowadziło na jakiś kierunek jak by taka kontrolkę zrobić abym mógł zrobić coś podobnego? .
Dzięki za wszelką odpowiedź.
Przepraszam jeżeli rozpisałem ten post nie zrozumiale
W WPFie jest kontrolka DataGrid która służy właśnie do przedstawiania danych w formie tabeli, oczywiście byś musiał sam sobie dostosować aby wyglądało tak jak chcesz.
Albo datagrid, albo cutomowo robisz, kontrolkę ale to upierdliwe i dobrze skaluje sie w dużych projektach. Opcją pośrednia jest owrapowanie datagrida swoją kontrolką.
Jak znasz HTML moze mozesz nastukać to blazor'ze i postawic serwerek by mieć dostęp do danych wszedzie.
Szukasz kontrolki która zastapi Excela ktorego juz zrobiles?
Owszem, excel nie jest idioto odporny, ale jesli masz fornatki, to mozesz skutecznie ukryc arkusze , ktore tutaj pelnia role baze danych i 60% odpornosci zyskasz.
zżera mnie ciekawosc jaka mechanika dzieje sie poza tym kalendarzem, tak, że potrafisz policzyc komus dni urlopu
Screen potraktowalbym jako raport, ale do danych wsadowych zmienilbym strukture na tabele:
Naglowki np:
Imię i nazwiski/pesel/data/obecnosc
Z takuej mozesz juz robic transpozycje i wizualizacje jakie chcesz, a dodatkowo korzystajsc z pola obecnosc, mozesz logowac statusy: np. Pracuje, urlop, choroba etc
Mam jeszcze jeden pomysł jego główną zaletą jest to ze nie będziesz musiał uczyć się specjalnie frameworków i sposobów i hakowania(bo w każdym albo czegoś brakuje, alebo jest (prawie)wszystko i są z byt skomplikowane.
WPF ma Canvas(cały renderer 3d) możesz wziąć ten canvas. Jeśli napiszezs kod, który rysuje szachownice, a w środku szachownicy rysuje, textboxy, i na żądanie odświeża, dane. Pozostanie Ci napisanie własnego scrolla i masz tablice, bez nauki WPF, czy innego frameworka.
Potem wystarczy tylko wydzielić taki kod, jako komponent i możesz wyświetlać lub wprowadzać dowolne dane. Logika będzie w kodzie,
Możesz użyć gotowych narzędzi do wczytania Excela i wywoływania makr, czyli tworzysz taką fasadę dla pliku Excelowego. Ale ja bym raczej spróbował zrobić to trochę porządniej, stworzył bym aplikację desktopową/webową, z bazą danych, wczytał wszystkie istniejące dane z Excela do bazy, stworzył formatki i przeniósł logikę z VBS do C# (są dostępne konwertery, które to ułatwią), w ten sposób zastąpisz Excela apką w C#
Biblioteki, na które mogą Ci pomóc:
Microsoft.Office.Interop.Excel
EPPlus
Do prezentacji tabel spoko mi się pracowało z kontrolkami DevExpress
Dziękuję wszystkim za odpowiedzi.
Na razie zostanę przy Excelu, obecnie zmieniam całe podejście do zagadnienia i przerabiam tak aby użytkownik który operuje na "programie" musiał wszystko robić przez formatki, przyciski itp.... Więcej rzeczy ukrywam.
C# zajmę się w późniejszym terminie jak znajdę i czas i jakieś dobre toturiale do nauki - najlepiej po polsku
Kiedyś bardzo mocno chciałem się przerzucić z Delphi na C# jak ten język był jeszcze młody ale jakoś nie wyszło.
Rzuciłem okiem na kontrolki które proponujecie, te płatne odpadają :) nikt mi nie da kasy na jakiś mój wymysł .
@TytusRomek
Liczenie urlopu wygląda tak: na każde przepracowane 30 dni przysługuje 2 dni urlopu wypoczynkowego, więc w odpowiedniej komórce przy danym pracowniku jest formuła :
=JEŻELI([@DR]="-";0;JEŻELI([@DR]>29;LICZBA.CAŁK([@DR]/30)*2;0))
@DR - komórka licząca dni pracy.
Pozdrawiam wszystkich.
Jeszcze raz dzięki