【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'(表示一个占 ...
随机推荐
- HCIP --- BGP综合实验
实验要求: 实验拓扑: 一.配置IP地址 L:代表环回地址(loop back 0) Y:代表业务网段的地址(loop back 1) 二.因为BGP基于IGP之上,给AS 2内配置OSPF 在R2上 ...
- 【进程/作业管理】篇章二:Linux系统作业控制(jobs)
作业:jobs 分类: 前台作业(foregroud):通过终端启动,且启动后会一直占据终端 后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端) 如何让作业运行于后台 ...
- [Python] iupdatable包:Status 模块使用介绍
常用状态做的一个集合,方便用在函数返回值中区分不同状态结果. 简单举例: from iupdatable import Status def fun(): print("do somethi ...
- IDEA使用SVN上传项目
文章最后附上svn服务器和客户端下载地址 一.IDEA集成SVN 二.查看SVN仓库 调出svn视图: 连接svn服务器: 连接后效果如下: 忽略上传文件 忽略文件如下:可以选择按规则匹配 .idea ...
- Java学习日报7.24
package tem; public class Tem { public static void main(String[] args) { // TODO 自动生成的方法存根 //每隔10摄氏度 ...
- QPushButton
QPushButton 什么是QPushButton? 构造函数 常用属性和方法 QPushButton 什么是QPushButton? QPushButton是一个按键类. class Q_GUI_ ...
- JAVA初始化及类的加载
在许多传统语言中,程序是作为启动过程的一部分被加载的.然后是初始化,紧接着程序开始运行.这些语言的初始化过程必须小心控制,以确保定义为static的东西,其初始化顺序不会造成麻烦.例如C++期望一个s ...
- 文本单词one-hot编码
单词->字母->向量 神经网络是建立在数学的基础上进行计算的,因此对数字更敏感,不管是什么样的特征数据都需要以向量的形式喂入神经网络,无论是图片.文本.音频.视频都是一样. one-hot ...
- 漫画 | 小公司卧薪尝胆三年,意外拿到美团offer
今天给大家分享一篇,非科班出生的野生前端从业者的励志成长故事,故事的主人公王大拿(化名),在小公司打杂三年后,意外拿到了美团的offer,成功进阶大厂,跳槽到了美团的核心外卖事业部. 事故主人公:王大 ...
- Solon rpc 1.2.18 发布,突出Rpc特性
Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,3500多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:Rpc. ...