从WPF中的ListView中导出数据到Excel

本文介绍了如何在WPF中从ListView导出数据到Excel或CSV文件。通过创建SaveFileDialog选择文件路径,然后利用StringBuilder构建数据字符串。关键在于获取ListView的Header文本并转换数据格式。最后,通过StreamWriter将内容写入文件。
摘要由CSDN通过智能技术生成

   ListView中队数据的导出与DataGridView略有不同。而且由于WPF中不支持创建WookBook直接来写数据到Excel中,因而在处理要进行一些技术性处理。下面以我前段时间做的一个处理为例。下面是示例方法:

 private void OutPutBill_Click(object sender, RoutedEventArgs e)
        {
            //判断是否有数据
            if (SignInList.ItemsSource == null)        //SignInList是WPF中的ListView,即为数据源
            {
                MessageBox.Show("没有可供导出的数据");
                return;
            }
            //创建数据导出文件对话框,以设置文件路径
            SaveFileDialog saveFile = new SaveFileDialog() { Filter = "CSV Files (*.csv)|*.csv|Excel Files (*.xls)|*.xls|All   files (*.*)|*.*" };
            saveFile.Title = "导出文件路径";
            saveFile.FilterIndex = 2;
            return saveFile;            StringBuilder strBuilder = new StringBuilder();
            if (saveFile.ShowDialog() == true)
            {
                //获取文件格式
                string strFormat = saveFile.SafeFileName.Substring(saveFile.SafeFileName.IndexOf('.') + 1).ToUpper();
                List<string> signLists = new List<string>();
                //将ListView的Header写入
                if (1 == 1)
                {
                    signLists.Clear();
                    //根据ListView的Header名称(ListVew中Header对应的Name)访问获取其文本
                    signLists.Add(Format(BillNO.Header.ToString(), strFormat));  //调用公共方法进行字符转换
                    signLists.Add(Format(ResumeNO.Header.ToString(), strFormat));
                    signLists.Add(Format(ExamTypeName.Header.ToString(), strFormat));
                    signLists.Add(Format(SignState.Header.ToString(), strFormat));
                    signLists.Add(Format(SignInDate.Header.ToString(), strFormat));
                    signLists.Add(Format(SignInTime.Header.ToString(), strFormat));
                    //按行写入Header
                    BuilderStringOfRow(strBuilder, signLists, strFormat);

                }
                forea

可以使用以下步骤将WPFDataGrid的数据导出Excel: 1. 添加对Microsoft.Office.Interop.Excel的引用。可以在项目通过右键点击“引用”->“添加引用”来添加。 2. 创建一个新的Excel应用程序对象: ``` using Excel = Microsoft.Office.Interop.Excel; Excel.Application excelApp = new Excel.Application(); ``` 3. 创建一个工作簿对象并添加一个新工作表: ``` Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = workbook.ActiveSheet; worksheet.Name = "DataGrid数据"; ``` 4. 将DataGrid数据复制到Excel表格: ``` for (int i = 0; i < dataGrid.Items.Count; i++) { for (int j = 0; j < dataGrid.Columns.Count; j++) { var cellValue = dataGrid.Columns[j].GetCellContent(dataGrid.Items[i]); if (cellValue != null) { worksheet.Cells[i + 1, j + 1] = cellValue.ToString(); } } } ``` 5. 保存Excel文件并关闭Excel应用程序对象: ``` workbook.SaveAs("DataGrid数据.xlsx"); workbook.Close(); excelApp.Quit(); ``` 完整代码示例如下: ``` private void ExportToExcel(DataGrid dataGrid) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook workbook = excelApp.Workbooks.Add(); Excel.Worksheet worksheet = workbook.ActiveSheet; worksheet.Name = "DataGrid数据"; for (int i = 0; i < dataGrid.Items.Count; i++) { for (int j = 0; j < dataGrid.Columns.Count; j++) { var cellValue = dataGrid.Columns[j].GetCellContent(dataGrid.Items[i]); if (cellValue != null) { worksheet.Cells[i + 1, j + 1] = cellValue.ToString(); } } } workbook.SaveAs("DataGrid数据.xlsx"); workbook.Close(); excelApp.Quit(); } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值