Jak to zrobić lub gdzie dostać ?

0

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 :
Bez tytułu.png
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

2

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.
screenshot-20240131190830.png

0

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.

0

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

0

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,

1

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

0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.