We sell a product here called pour-n-restore which might be able to help if the oil hasn't been down for a long time. Long term stains are a but more pesky to get rid of. Pressure washer would be the first go to to try and remove as much as possible before attempting any cleaners.
Many stores have concrete cleaning product. E.g. walmart should carry one, or home depot. Fresh oil can be cleaned immediately with these products or with water and liquid detergent or dishwashing soap. Commercial cleaning products will likely contain muriadic acid, so you can simply buy it and dilute. You won't be able to remove older stains completely and you can overdo the cleaning, destroying cement (exposong sand or lightening too mich, thus creating another type of color change). Once you did reasonable cleaning (go slow, don't overdo), and if there is still a spot you can buy portland cement and cement colorant, mix them with water to paint-like consistentcy and brush in the spot, feathering the edges. It's an art... Good luck. Pressure washing will unlikely do any help, as it lightens stained area, as well as clean one.
Thanks! Your answer is awaiting moderation.