引言

在做项目时要求将datagrid的内容导出到Excel,以前做winform项目时遇到过,就把代码搬过来用,但wpf和winform还是有些不同,就修改了一些东西,使其能实现这个功能。

本文是导出2个datagrid的内容,并将其拼接。第一部分是鼠标选择的datagrid的那一行,第二部分是第2个datagrid的所有内容。具体情况可参考代码修改。

代码

//导出Excel(左卫狐)
private void OutPutExcelButton_Click(object sender, EventArgs e)
{ SaveFileDialog saveFileDialog = new SaveFileDialog();
DateTime dt = DateTime.Now;
string sj = dt.ToString("yyyyMMddHHmmss");
saveFileDialog.Filter = "Execl表格文件 (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";
saveFileDialog.FileName = this.Title + sj;
saveFileDialog.ShowDialog();
Stream myStream;
try
{
myStream = saveFileDialog.OpenFile();
}
catch (IndexOutOfRangeException)
{
return;
}
//StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str1 = "";
string str2 = "";
try
{
//写标题
for (int i = 0; i < this.dgvMain.Columns.Count; i++)
{
if (i > 0)
{
str1 += "\t";
}
str1 += dgvMain.Columns[i].Header.ToString();
}
sw.WriteLine(str1); DataRowView mySelectedElement = (DataRowView)dgvMain.SelectedItem; //选择的那一行
string tempStr1 = "";
//写内容
for (int j = 0; j < dgvMain.Items.Count; j++)
{ if (j > 0)
{
tempStr1 += "\t";
}
tempStr1 += (mySelectedElement.Row[j].ToString());
}
sw.WriteLine(tempStr1);
//写标题
for (int i = 0; i < this.dgvDetail.Columns.Count; i++)
{
if (i > 0)
{
str2 += "\t";
}
str2 += dgvDetail.Columns[i].Header.ToString(); }
sw.WriteLine(str2);
//写内容
string tempStr2 = "";
for (int j = 0; j < dgvDetail.Items.Count; j++)
{
DataRowView mySelectedElements = (DataRowView)dgvDetail.Items[j];
for (int k = 0; k < dgvDetail.Columns.Count; k++)
{
if (k > 0)
{
tempStr2 += "\t";
}
tempStr2 += mySelectedElements.Row[k].ToString();
}
if (j < dgvDetail.Items.Count)
{
tempStr2 += "\r\n";
}
}
sw.WriteLine(tempStr2); sw.Close();
myStream.Close();
MessageBox.Show("导出成功");
}
catch (Exception e1)
{
MessageBox.Show(e1.ToString());
} finally
{
sw.Close();
myStream.Close();
}
}

体会

没有解决不了的问题。在解决问题的过程中得按照顺序一步步去分析,不要这里试一下,那里试一下。

【WPF】将DataGrid内容导出到Excel的更多相关文章

  1. 将页面上的内容导出到Excel

    <asp:Button ID="lkbExport" runat="server" Name="Save" Text="导出 ...

  2. 使用NPOI将TABLE内容导出到EXCEL

    项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...

  3. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  4. jsp 页面内容导出到Excel中

    日常使用网络资源时经常需要把网页中的内容下载到本地,并且导出到Excel中,现在介绍一种非常简单的方式实现网络资源的下载.只需要讲jsp的最上面加上一句话 <% response.reset() ...

  5. WPF的DataGrid控件从excel里复制数据然后粘贴

    WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...

  6. asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL

    代码: /// <summary> /// HTML Table表格数据(html)导出EXCEL /// </summary> /// <param name=&quo ...

  7. Datagrid数据导出到excel文件的三种方法

    原文连接: http://www.cnblogs.com/xieduo/articles/606202.html 一.文件保存在服务器,提供下载 方法一:导出到csv文件,存放在服务器端任一路径,然后 ...

  8. datagrid数据导出到excel文件给客户端下载的几种方法

    方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...

  9. 将DataTable内容导出到Excel表格的两种方法

    方法一:循环DataTable单元格内容拼接字符串,利用StreamWriter的Write方法将字符串写入Excel文件中 这种方法很实现很简单.拼接字符串时,每个单元格之间添加'\t'(表示一个占 ...

随机推荐

  1. 基于 WebRTC 的 RTSP 视频实时预览

    简介 背景 由于项目需要,需要使用摄像头预览功能,设备型号为海康威视.目前已存在的基于 FFmpeg 的方案延迟都太高,所以项目最终选择基于此方案. 方案 方案选用为基于 WebRTC 的视频即时通讯 ...

  2. linux中搭建phpmyadmin详细流程

    一.phpmyadmin部署流程 1.1介绍 phpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库. ...

  3. Windows 上安装 PostgreSQL

    PostgreSQL官网–>Download–>Windows 64位,如图所示: (1)官网: https://www.postgresql.org/ (2)Download: http ...

  4. springboot使用aspectJ

    添加springboot-aop的starter <dependency> <groupId>org.springframework.boot</groupId> ...

  5. HADOOP单机版配置

    1.需要软件 jdk hadoop 将jdk和hadoop解压到自己想要存放的路径 这里我解压到/usr/目录下 sudo tar -zxvf java1.8.tar.gz -C /usr/ hado ...

  6. java内部类对象使用.this,.new

    public class InnerClass { class Content { private int i; public int getVlaue() { return i; } } class ...

  7. 如何利用Typora编写博客,快速发布到多平台?

    在不同的平台发布同样的文章,最让人头疼的就是图片问题,如果要手动一个个去重新上传,耗时耗力,还容易搞错.下面分享的方法,可以将Typora编写的文章快速发布到CSDN.微信公众号.博客园.简书等平台. ...

  8. 一、linux安装mysql

    一.下载mysql免编译包: wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.g ...

  9. Ubuntu无法ssh远程连接问题 (转)

    [系统]Ubuntu 12.04 server [问题描述]新安装的Ubuntu系统无法直接通过ssh远程连接. [解决办法] 新安装的Ubuntu系统并未安装ssh-server服务,需要自行安装, ...

  10. tf.argmax(vector,axis)函数的使用

    1.返回值 vector为向量,返回行或列的最大值的索引号: vector为矩阵,返回值是向量,返回每行或每列的最大值的索引号. 2.参数 vector为向量或者矩阵 axis = 0 或1 0:返回 ...