The key is multiplexing.
You need something to source current to the anodes.
You need something to sink current from the cathodes.
A straightforward way is to have the anodes connected in rows 'across' the display, and cathodes connected in columns 'down' the array.
Then drive all the anodes, sink from 1 cathode for 1/30/# of columns in mS. Turn off cathode.
Send out next set of anode info, turn on cathode, hold, turn off cathode.
Repeat for all columns.
Shift register like cd74AC164 can source 24mA of current. MOSFET like AOI516 can sink Lots of current for each column.
Use SPI.transfer to send the data to the anode shift register and to cathode shift registers with AOI516 as output buffer.
This board I offer has 96 anode drives and 9 cathode transistors; 7 more transistors can added externally (extra IO from cathode shift registers are broken out, just add the header and wire them up.
(hmm, looks like I need to fix the schematic link).