Wireless spectrum is a precious resource and must be allocated and used efficiently. Conventional spectrum allocations let a government agency (e.g., FCC) sell a portion of spectrum to one provider. This is not only restrictive, but also limits spectrum reuse and may lead to significant under-utilization of spectrum. In this paper, we develop a novel truthful double-auction scheme to let any resource owner (e.g., a cellular provider), who has spare spectrum at a given time period, sell to one or more providers that need additional spectrum at that time. Spectrum auctions are fundamentally different from conventional auction problems since spectrum can be reused and competition among buyers is complex due to wireless interference. Our proposal is the first double-auction design for spectrum allocation that explicitly decouples the buyer-side and seller-side auction design while achieving: 1) truthfulness; 2) individual rationality; and 3) budget-balance. To accurately capture wireless interference and support spectrum reuse, we partition the conflict graph so that buyers with strong direct and indirect interference are put into the same subgraph, and buyers with no interference or weak interference are put into separate subgraphs. Then, we compute pricing independently within each subgraph. We then develop a scheme to combine spectrum allocation results from different subgraphs and resolve potential conflicts. We further extend our approach to support local sellers whose spectrum can only be sold to buyers within certain regions, instead of all buyers. Using conflict graphs generated from real cell tower locations, we extensively evaluate our approach and demonstrate that it achieves high efficiency, revenue, and utilization.