Heat the oil in a pan over medium heat. Add the onion and sauté 2-3 min, then add the spinach. Add salt, cover and cook over high heat 3-4 min until the leaves wilt and turn very deep green. Transfer the spinach to a colander, then press to remove excess water. Chop coarsely and set aside.
Meanwhile, heat the butter in a heavy saucepan over moderately low heat until it has melted, then add the flour and cook the roux over low heat, with whisking, for 3 minutes. Add the milk in a fast stream while whisking vigorously to avoid lumps. Bring to a boil, then reduce the heat and simmer, whisking occasionally, 5 minutes. Season with salt and pepper.
Take the saucepan off the heat, then add all of the ricotta cheese and all the grated Parmesan minus about 2-3 spoonfuls (set this aside for sprinkling on top of the assembled dish). Add the egg, spinach, and grated nutmeg, then mix well.
Spread a few spoonfuls of the spinach mixture on the bottom of a baking dish. Fill the cannelloni tubes with the mixture, then place them in the dish in a single layer (if a very large dish is not available for large amounts, they may be layered). Cover with the remaining spinach mixture and the reserved parmesan cheese.
Bake in the middle of the oven 35-40 min until the top is golden-brown. Let stand 5 minutes at room temperature before serving.
The complete dish may be assembled a couple days ahead and chilled or frozen, well covered. It can be taken directly from the freezer and baked for about 1 h.