mainpage.xaml

1  <Grid x:Name="LayoutRoot" Background="White">
2             <StackPanel Orientation="Vertical" >
3             <Button Content="Export to Excel" Height="23" HorizontalAlignment="Left" x:Name="button1" VerticalAlignment="Top" Width="150" Click="button1_Click" />
4             <toolkit:Chart HorizontalAlignment="Left" Name="chart1" Title="Line Chart" VerticalAlignment="Top" Height="300" Width="640" >
5             </toolkit:Chart>
6         </StackPanel>
7     </Grid>
View Code

后台

 1  public MainPage()
 2         {
 3             InitializeComponent();
 4             this.Loaded += new RoutedEventHandler(UserControl_Loaded); ;
 5         }
 6         private void UserControl_Loaded(object sender, RoutedEventArgs e)
 7         {
 8             ObservableCollection<EmployeePoints> empPoints = new ObservableCollection<EmployeePoints>()
 9             { 
10                 new EmployeePoints() { Name = "John", Points = 10 }, 
11                 new EmployeePoints() { Name = "Sam", Points = 40 },
12                 new EmployeePoints() { Name = "Mary", Points = 80 }, 
13                 new EmployeePoints() { Name = "Pierce", Points = 60 }, 
14                 new EmployeePoints() { Name = "Paul", Points = 70 }, 
15             };
16             LineSeries columnSeries = new LineSeries();//实例化一个Series:
17 
18             //注意ColumnSeries所在命名空间   
19 
20             //为:using System.Windows.Controls.DataVisualization.Charting;
21 
22 
23             columnSeries.ItemsSource = empPoints;  //设置数据源
24             columnSeries.DependentValueBinding = new Binding("Points");       //后台进行数据绑定         
25             columnSeries.IndependentValueBinding = new Binding("Name");
26             //columnSeries.Title = "";
27 
28             chart1.Series.Add(columnSeries);//为Chart绑定“显示类型”
29 
30 
31 
32         }
33 
34         private void button1_Click(object sender, RoutedEventArgs e)
35         {
36             WriteableBitmap bitmap = new WriteableBitmap(640, 300);
37             bitmap.Render(chart1, null);
38             bitmap.Invalidate();
39 
40 
41             // open file dailog for selecting export file
42             SaveFileDialog sDialog = new SaveFileDialog();
43             sDialog.Filter = "Excel Files(*.xls)|*.xls";
44 
45             if (sDialog.ShowDialog() == true)
46             {
47                 // create a workbook object
48                 Workbook workbook = new Workbook();
49                 //Create a worksheet object 
50                 Worksheet worksheet1 = new Worksheet("SheetWithImage");
51 
52                 // creat a spreadsheet picture object
53                 Lite.ExcelLibrary.SpreadSheet.Picture pic = new Lite.ExcelLibrary.SpreadSheet.Picture();
54                 //set its image property from silverlight image control
55                 // image formates 0xF01E=png,0xF01D=jpeg
56                 //ImageTranslator.TranslateImageToBytes translate an image control to byte array
57                 // that will be used by excel picture object to plot picture in excel file.
58                 System.Windows.Controls.Image image = new System.Windows.Controls.Image();
59                 image.Source = bitmap;
60                 image.Name = "imgExport";
61                 image.Width = 640;
62                 image.Height = 300;
63                 image.Stretch = Stretch.Fill;
64                 pic.Image = new Lite.ExcelLibrary.SpreadSheet.Image(ImageTranslator.TranslateImageToBytes(image), 0xF01E);
65 
66                 //set picture size
67                 pic.TopLeftCorner = new CellAnchor(1, 1, 10, 10);
68                 pic.BottomRightCorner = new CellAnchor(8, 5, 10, 10);
69                 // add picture to spreadsheet
70                 worksheet1.AddPicture(pic);
71                 /// add worksheet to workbook
72                 workbook.Worksheets.Add(worksheet1);
73                 // get the stream of selected file
74                 Stream sFile = sDialog.OpenFile();
75                 // save excel file 
76                 workbook.Save(sFile);
77             }
78         }
79 
80 
81         public class EmployeePoints
82         {
83             public string Name { get; set; }
84             public int Points { get; set; }
85         }
86     }
View Code


用到了工具       Lite Excel Binaries

下载地址:http://excellite.codeplex.com/

The source from http://sreeharip.wordpress.com/2011/12/04/exporting-a-silverlight-chart-to-excel-in-browser/

   
posted on 2013-05-14 09:57  aking96  阅读(295)  评论(0编辑  收藏  举报