Prepare the spinach filling
In a large pan, heat the butter and olive oil until melted over medium heat.
Add the shallot and garlic and cook for one minute, careful not to burn it.
Gradually add the spinach and stir continuously until wilted. If you use frozen spinach, stir until most of the moisture is gone. You should be left with a dry pan bottom. Season with salt and pepper.
Transfer the spinach to a fine strainer and press with a spatula to remove any excess moisture. Leave aside.
Prepare the ricotta
In a large bowl, combine half the ricotta with the eggs, Parmigiano cheese, and the nutmeg. Mix with a hand mixer (or use a food processor) until completely smooth. Season with salt and pepper.
In a food processor, pulse the spinach until finely chopped, but not reduced to a paste.
Add the spinach to the ricotta mixture and mix with a spatula. Fold the remaining ricotta in the mixture.
Prepare the bechamel sauce
In a sauce pan, heat the butter over medium heat until completely melted. Add the flour gradually and whisk until you obtain a pale golden mixture.
Start adding the milk in small increments, whisking continuously. Stir until all the milk is in and the sauce thickens. Remove from the heat and add the Gruyere cheese and half of the mozzarella. Set aside.
Assemble the cannelloni
Preheat the oven at 200 degrees Celsius.
In a large casserole, add two ladles of the white sauce and spread it evenly.
Take a lasagne sheet and add about half a ladle of the spinach mixture to the lower end of the sheet. Roll until a cannelloni takes shape and place in the casserole. Repeat with the rest of the lasagne sheets.
Spread the remaining bechamel over the cannelloni and sprinkle the remaining mozzarella on top. Use a spatula to spread it evenly.
Cover with aluminum foil and bake on a low-medium rack for 30 minutes.
Remove the foil and bake for 20 more minutes or until the top is lightly browned.
Let it cool for 10 minutes before serving.