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>
后台
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 }
用到了工具 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/