【WPF】将DataGrid内容导出到Excel
引言
在做项目时要求将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的更多相关文章
- 将页面上的内容导出到Excel
<asp:Button ID="lkbExport" runat="server" Name="Save" Text="导出 ...
- 使用NPOI将TABLE内容导出到EXCEL
项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...
- 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; ...
- jsp 页面内容导出到Excel中
日常使用网络资源时经常需要把网页中的内容下载到本地,并且导出到Excel中,现在介绍一种非常简单的方式实现网络资源的下载.只需要讲jsp的最上面加上一句话 <% response.reset() ...
- WPF的DataGrid控件从excel里复制数据然后粘贴
WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...
- asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
代码: /// <summary> /// HTML Table表格数据(html)导出EXCEL /// </summary> /// <param name=&quo ...
- Datagrid数据导出到excel文件的三种方法
原文连接: http://www.cnblogs.com/xieduo/articles/606202.html 一.文件保存在服务器,提供下载 方法一:导出到csv文件,存放在服务器端任一路径,然后 ...
- datagrid数据导出到excel文件给客户端下载的几种方法
方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...
- 将DataTable内容导出到Excel表格的两种方法
方法一:循环DataTable单元格内容拼接字符串,利用StreamWriter的Write方法将字符串写入Excel文件中 这种方法很实现很简单.拼接字符串时,每个单元格之间添加'\t'(表示一个占 ...
随机推荐
- 【windows】【消息中间件】【安装】Elasticsearch
一.准备工作 elasticsearch的下载地址:https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址:https://githu ...
- windows Server 2016安装Sqlserver远程连接的坑
如果要连接远程服务器 首先打开防火墙端口1433 新建入站规则 然后 如果没启用 就启用 然后重启服务就行 如果还是不行 进去属性 修改三处 然后重启服务
- 前端技术VUE 的前世今生从PC 走向移动
一.Vue的前世 Vue 框架诞生于2014年,他的作者为中国人–尤雨溪(江苏无锡人).Vue用于构建交互式的Web界面的库,是一个构建数据驱动的Web界面渐进式框架,该框架遵循CMD规范,并且提供的 ...
- Azure Terraform(二)语法详解
一,引言 上篇文章开始,我们简单介绍了以下通过基础设施管理工具----- Terraform,通过它来统一管理复杂的云基础设施资源.作为入门演示,使用Terraform 部署Azure 资源组的方式直 ...
- positive-unlabeled (PU) learning
PULearning的应用场景是,我们可以清晰地确定正样本,但是不能确定负样本,因为它有可能是正样本,只是我们还没有证明. 这时我们可以把这部分不确定的样本称为无标签样本U,加上正样本P来建立模型. ...
- [leetcode]297. Serialize and Deserialize Binary Tree一般二叉树的编解码
由于一般的前序遍历不能唯一的还原出原本你的二叉树,所以要改变一下: 记录二叉树的结构信息,也就是空节点用符号表示 一般的前序遍历只是记录了节点的前后顺序,通过记录空节点,每一层的结构就可以记录下来 解 ...
- Js HTML DOM动画
基础页面 为了演示如何通过 JavaScript 来创建 html 动画,我们将使用一张简单的网页: 实例 我的第一部 JavaScript 动画 我的动画在这里. 创建动画容器 所有动画都应该与容器 ...
- Redis 设计与实现 6:五大数据类型之列表
列表对象有 3 种编码:ziplist.linkedlist.quicklist. ziplist 和 linkedlist 是 3.2 版本之前的编码. quicklist 是 3.2 版本新增的编 ...
- 粉丝投稿!从2月份的面试被拒到如今的阿里P7,说一说自己学java以来的经验!
个人近期面试情况 今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的.其中有很多自己觉得还面的不错的岗位,比如百度.跟谁学.好未来等公司.说实话,打击比较大. 情况基本上是从三 ...
- Above the Median
http://www.forioi.com/p/3212 农夫约翰把他的N(1<=N<=1e5)奶牛排在一排来衡量他们的高度,牛i有:高度H_I(1<=H_I<=1e9)纳米– ...