I'm one of the ones that uses Excel. I set it up with a separate file for each pasture, and each file contains:
1. One page for each year with a row for each cow in the pasture, with columns for her tag number, calving date, calf's sex, calf's sire, calf's tag number, date sold or weaned, weight, price per pound, total sale price, and calving date last year. The last column really isn't necessary, but then I can tell at a glance how each cow calved in relation to the year before. Each year I make a copy of the previous year's sheet, change the sheet name to the current year, delete everything about the last calf except calving date, move that information into the "last year calving date" column, and it's ready to enter the calving information for the current year.
2. One page for each cow or bull. It has tag number, sire, dam, birth date, breed, and, if it was bought, date and cost. There is also a row for the animal's location, with a new row added each time it's moved. Next is a space for miscellaneous informaion. For cows I have a chart below that listing her calving history. After entering that information in the sheet from 1 above I copy and paste each row to this chart. When I move an animal, I move their page to the appropriate file. I also have a folder for "Sold Cows", with a file for each year. If I sell a cow her page gets moved into the file for that year, after entering the date and amount of the sale.
3. One page for general pasture history, such as when I first started using it, when I mowed or sprayed, worked cattle, etc. I'm afraid I don't always enter all the information into this column that I should, but at least it's there.
I also save this to the cloud (I use OneDrive), so it's accessible from my laptop or phone. I know some folks, especially those with registered animals, have much more extensive records, but this seems to work for me.