WPF将DataGrid内容导出到Excel

来源:互联网 发布:application.js下载 编辑:程序博客网 时间:2024/05/20 13:18

WPF将DataGrid内容导出到Excel

最近在维护一个项目程序的时候需要新添加一些需求,其中一个需求就是把WPF中的datagird中的内容导出为Excel。查了很多网上的资料,最后结合将DataGridView导出到Excel的方法做了一些调整之后实现了功能需求。
!首先在VS里引用,前提电脑里必须要有Excel否则不能引用

我是通过点击button控件进行保存的。直接贴代码

private void ExportParameterBtn_Click(object sender, RoutedEventArgs e)        {            string fileName = "";            string saveFileName = "";            SaveFileDialog saveDialog = new SaveFileDialog();            saveDialog.DefaultExt = "xlsx";            saveDialog.Filter = "Excel 文件|*.xlsx";            saveDialog.FileName = fileName;            saveDialog.ShowDialog();            saveFileName = saveDialog.FileName;            if (saveFileName.IndexOf(":") < 0) return;  //被点了取消            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();            if (xlApp == null)            {                System.Windows.MessageBox.Show("无法创建Excel对象,您可能未安装Excel");                return;            }            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //取得sheet1            //写入行            for (int i = 0; i < ParaGrid.Columns.Count; i++)            {                worksheet.Cells[1, i + 1] = ParaGrid.Columns[i].Header;                                                    }            for (int r = 0; r < ParaGrid.Items.Count; r++)            {                for (int i = 0; i < ParaGrid.Columns.Count; i++)                {                    worksheet.Cells[r + 2, i + 1] = (ParaGrid.Columns[i].GetCellContent(ParaGrid.Items[r]) as TextBlock).Text;   //读取DataGrid某一行某一列的信息内容,与DataGridView不同的地方                }                System.Windows.Forms.Application.DoEvents();            }            worksheet.Columns.EntireColumn.AutoFit();            MessageBox.Show(fileName + "保存成功");            if(saveFileName!="")            {                try                {                    workbook.Saved = true;                    workbook.SaveCopyAs(saveFileName);                }                catch(Exception ex)                {                    MessageBox.Show("导出文件可能正在被打断!" + ex.Message);                }            }            xlApp.Quit();            GC.Collect();                 }

修改的主要部分就是读取DataGrid行列内容,导入Excel部分没有作修改。

原创粉丝点击