宋青州临淄(今山东益都西北)人,字元考。以荫入官,历知县、通判,后召知礼院。嘉右四年(1059),为秘阁校理。熙宁中,迁知宗正丞,议改宗庙中秋荐新为春献。元丰二年(1079),为国史院编修官,撰《百官公卿表》、《宗室世系表》,迁修起居注。后出知地方。元右初,迁兵部侍郎、礼部尚书,充国史院修撰兼知院事,预修《神宗实录》。绍圣初,被责安远节度副使,澧州(治今湖南澧县)安置。