您的当前位置:首页正文

WPF中DataGrid导出Excel

2021-09-01 来源:榕意旅游网


工作中需要将DataGrid中的数据导出到Excel,从网上查了很多资料,大部分都是将数据以流的形式导出,我需要的是直接导出到Excel文件中, 百度加Google了两三天终于弄出来了,写下来跟大家分享下。我的DataGrid绑定的数据源是XML文件,并采用数据模板的形式显示数据,没有用到 数据库。

DataGrid的xaml代码如下:

view plain

1. 2. MinHeight=\"300\" HorizontalAlignment=\"Left\" Margin=\"10\" Name=\"dataGrid1\"

3. VerticalAlignment=\"Top\" Width=\"Auto\" MinWidth=\"500\" >

4.

5.

6.

7.

8. 9. Text=\"{Binding Path=Element[Author].Value, Mode=TwoWay,

10. UpdateSourceTrigger=PropertyChanged}\"/>

11.

12.

13.

14.

15.

16.

17. 18. Text=\"{Binding Path=Element[Title].Value, Mode=TwoWay,

19. UpdateSourceTrigger=PropertyChanged}\"/>

20.

21.

22.

23.

24.

25.

26. 27. Text=\"{Binding Path=Element[Version].Value, Mode=TwoWay,

28. UpdateSourceTrigger=PropertyChanged}\"/>

29.

30.

31.

32.

33.

导出Excel时,因为我DataGrid用的模板,获取cell的Content时,获取的总是错误的,Content显示内容 为:System.Windows.Controls.ContentPresenter,试了好多

办法都解决不了,就直接用XElement来实现了, 谁有更好的解决办法,欢迎交流,我的导出代码如下:

view plain

1. private void WriteData(object[] header, DataGrid dataTable)

2. {

3. object[,] objData = new object[dataTable.Items.Count, header.Length];

4. List cells = new List(header.Length);

5. for (int j = 0; j < dataTable.Items.Count; j++)

6. {

7. XElement xe =

8. (XElement)dataTable.Items[j];

9. XElement node1 = xe.Element(\"Author\");

10. cells.Add(node1.Value.ToString());

11. XElement node2 = xe.Element(\"Title\");

12. cells.Add(node2.Value.ToString());

13. XElement node3 = xe.Element(\"Version\");

14. cells.Add(node3.Value.ToString());

15. for (int i = 0; i < header.Length; i++)

16. {

17. objData[j, i] = cells[i];

18. }

19. cells.Clear();

20. }

21. AddExcelRows(\"A2\", dataTable.Items.Count, header.Length, objData);

22. AutoFitColumns(\"A1\", dataTable.Items.Count + 1, header.Length);

23. }

红色代码部分就是导出数据的过程

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 版权所有