Office 365中制作报表的方式很多。
这里介绍下使用js获取SharePoint List实现报表的一种方法
资源
- Jquery 1.8.2 http://blog.jquery.com/2012/09/20/jquery-1-8-2-released/
- SPServices http://spservices.codeplex.com/
- Highcharts http://www.highcharts.com/
- underscore.js http://underscorejs.org/
先看效果, 要实现一个饼图

看代码
详细代码解释见原文(原文中的代码有点小问题,修复后的代码如下) http://www.sharepointdeveloperhq.com/2013/05/utilizing-spservices-for-sharepoint-2010-to-create-charts-with-high-charts/
1 <script src="/sites/target3/Theme/jquery.min.js" type="text/javascript"></script>
2 <script src="/sites/target3/Theme/highcharts.js" type="text/javascript"></script>
3 <script src="/sites/target3/Theme/jquery.SPServices-2013.01.js" type="text/javascript"></script>
4 <script src="/sites/target3/Theme/underscore.js" type="text/javascript"></script>
5 <script type="text/javascript">
6 $(document).ready(function () {
7 $().SPServices({
8 operation: "GetListItems",
9 CAMLQuery: "<Query><OrderBy><FieldRef Name=‘Location‘/></OrderBy></Query>",
10 CAMLViewFields: "<ViewFields><FieldRef Name=‘Title‘/><FieldRef Name=‘Date_x0020_of_x0020_Sighting‘/><FieldRef Name=‘Action‘/><FieldRef Name=‘Location‘/></ViewFields>",
11 listName: "owl seen",
12 completefunc: processData
13 });
14 });
15
16 function processData (xData, status) {
17 var owlData = [];
18 $(xData.responseXML).SPFilterNode("z:row").each(function () {
19 owlData.push({
20 owl: $(this).attr(‘ows_Title‘),
21 date: $(this).attr(‘ows_Date_x0020_of_x0020_Sighting‘),
22 action: $(this).attr(‘ows_Action‘),
23 location: $(this).attr(‘ows_Location‘)
24 });
25 });
26
27 var chartData = [];
28 var locationData = _.groupBy(owlData, ‘location‘);
29
30 $.each(locationData, function(row) {
31 var locCount = row.length;
32
33 chartData.push( {
34 name: row[0].location,
35 y: locCount
36 });
37
38 });
39
40 renderChart (chartData);
41 }
42
43 function renderChart (data) {
44 var chart = new Highcharts.Chart({
45 chart: {
46 renderTo: ‘owlchart‘,
47 plotBackgroundColor: null,
48 plotBorderWidth: null,
49 plotShadow: false
50 },
51 credits: {
52 enabled: true
53 },
54 title: {
55 text: ‘Owl Sightings by Location‘
56 },
57 tooltip: {
58 pointFormat: ‘{series.name}: <b>{point.percentage}%</b> {point.y} Times‘,
59 percentageDecimals: 1
60 },
61 plotOptions: {
62 pie: {
63 allowPointSelect: true,
64 cursor: ‘pointer‘,
65 dataLabels: {
66 enabled: true,
67 color: ‘#000000‘,
68 connectorColor: ‘#000000‘,
69 formatter: function() {
70 return ‘<b>‘+ this.point.name +‘</b>: ‘+ this.y +‘ Times‘;
71 }
72 },
73 }
74 },
75 series: [{
76 type: ‘pie‘,
77 name: ‘Location Count‘,
78 data: data
79 }]
80 });
81 }
82 </script>
83 <div id="owlchart">????????</div>
Thanks,
Ivan