有这样一个需求,要将Sharepoint中list数据按照一定的计算和汇总导出到excel不同sheet中,我的设想步骤是
1.用vs编写一个webpart(貌似是做个 dll),安装部署到sharepoint中,
2.在此webpart中用CAML编写查询代码获取list数据
3.在此webpart中将获取的list数据转换出成datatable格式
4.在此webpart中再将datatable数据逐行循环写入到excel中
因为以前只是开发asp.net,完全没有接触过Sharepoint,花了两天恶补了一下Sharepoint基础才有了以上的想法。
所有想确认
1.以上方式是否可行?
2. 因为是从不止一个list 中取数据(最多从 3个LIST中抓数据),CAML是否支持
3.CAML获得list数据返回的是XML格式的,再转换出成datatable格式是否可行
希望有大虾能给我指条明路,如果有示范代码那就更感激涕零了,
------解决方案--------------------
要将Sharepoint中list数据按照一定的计算和汇总
这个怎么理解?
跨List查询可以用SiteDataQuery
获得的数据是XML格式,用ServerAPI可以通过对象解析 SPListItemCollection,可以直接ToDataTable
------解决方案--------------------
---后面是我的回答
1.以上方式是否可行?----------------肯定可以
2. 因为是从不止一个list 中取数据(最多从 3个LIST中抓数据),CAML是否支持-----绝对支持
3.CAML获得list数据返回的是XML格式的,再转换出成datatable格式是否可行-------可以
----------------------------------------------
建议1 如果是2013 你考虑试试 power pivot。很轻松。
------解决方案--------------------
我的这句话说错了:"如果想使用SiteDataQuery,一次查多个表,比较麻烦些,因为使用CAML的join和数据库的join是不一样的,有一些条件,我在网上看到的例子都是两个表之间需要有lookup column关联的。", 请忽略。
如果使用SiteDataQuery,可以参考http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsitedataquery.aspx
一次把list1和list2中的数据取出来(不能指定list1.ID=list2.ID这样来取),返回值是DataTable,然后根据list1.ID和list2.ID过滤出你想要的DataRow。