将DataGrid数据写入Excel文件。

C#写的Excel文件导入到Datagridview,Datagridview导入Excel class ExcelCtrl    {        #region 将DataGridView控件中数据导出到Excel        ///         /// 将DataGridView控件中数据导出到Excel        ///         /// DataGridView对象        /// 是否显示Excel界面        ///         publi 阅读详情
前几天项目中有个地方需要将DataGrid的数据直接导入Excel里,以提供给用户下载,在网上找了下,好像都是与下面代码类似的实现:
程序代码:

this.EnableViewState   =   false;         
System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);   
System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);   
Response.Write(oStringWriter.ToString());
Response.End();

原理也就是把DataGrid的信息以流的形式写到html输出流的形式实现,自己尝试下,好像可以。我装的windowxp sp2版的,后来到同事的机器上去试,结果就出问题了,每次执行的时候,弹出那个【打开、保存、取消】的页面,再一点,结果整个站点的页面都关闭了,再到其他机器上去试,结果有的能正常下载,有的就不行,以前听说过有这么个问题,好像也没什么好的办法解决。
    后来考虑了下,何必不直接把写到html流的信息直接写到一个excel文件里面去让客户直接下载excel,于是稍微修改了下别人的源码,直接生成Excel文件来让客户下载,演示源代码如下:

WebForm4.aspx----Html部分:
程序代码:

<%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="WebUI.WebForm4" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>WebForm4</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <asp:datagrid id="DataGrid1" runat="server" width="100%">
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
    <FooterStyle HorizontalAlign="Center"></FooterStyle>
    <PagerStyle PageButtonCount="15" Mode="NumericPages"></PagerStyle>
   </asp:datagrid>
   <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 152px" runat="server"
    Text="Button"></asp:Button>
  </form>
 </body>
</HTML>


页面上就一个DataGrid和一个按钮,按钮用来触发将数据到Excel,后台的其他代码也就不弄上来了,下面是那个关键的按钮事件
程序代码:

private void Button1_Click(object sender, System.EventArgs e)
{
 DataTable SourceTb = new DataTable();
 DataColumn myDataColumn;

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "RowIndex";  //序  号
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpManName"; //审批人
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpIdeas"; //审批意见
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpDate"; //审批时间
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "CheckUpRole"; //审批岗位
 SourceTb.Columns.Add(myDataColumn);

 myDataColumn   = new DataColumn();
 myDataColumn.DataType = System.Type.GetType("System.String");
 myDataColumn.ColumnName = "HandleType";  //操作类型(1:提交| 9:驳回)
 SourceTb.Columns.Add(myDataColumn);

 DataRow myDataRow;
 for(int i = 0;i < 30;i ++)
 {
  myDataRow     = SourceTb.NewRow();
  myDataRow["RowIndex"]  = i.ToString();
  myDataRow["CheckUpManName"] = "张三";
  myDataRow["CheckUpIdeas"] = "同意";
  myDataRow["CheckUpDate"] = "2006-03-20";
  myDataRow["CheckUpRole"] = "物资部主任";
  SourceTb.Rows.Add(myDataRow);
 }

 //绑定数据到DataGrid1
 this.DataGrid1.DataSource = SourceTb.DefaultView;
 this.DataGrid1.DataBind();
 //将DataGrid1构成的html代码写进StringWriter
 this.DataGrid1.Page.EnableViewState = false;
 System.IO.StringWriter  tw   = new System.IO.StringWriter();
 System.Web.UI.HtmlTextWriter hw  = new System.Web.UI.HtmlTextWriter(tw);
 this.DataGrid1.RenderControl(hw);
 string HtmlInfo = tw.ToString().Trim();

 string DocFileName = "审批信息.xls";
 string FilePathName = Request.PhysicalPath;
 FilePathName  = FilePathName.Substring(0,FilePathName.LastIndexOf("//"));
 //得到Excel文件的物理地址
 FilePathName  = FilePathName +"//" + DocFileName;
 System.IO.File.Delete(FilePathName); 
 FileStream Fs  = new FileStream(FilePathName, FileMode.Create);
 BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("GB18030"));
 //将DataGrid的信息写入Excel文件
 BWriter.Write(HtmlInfo);
 BWriter.Close();
 Fs.Close();
}


好了,写入信息到Excel文件成功了,至于说生成的Excel文件在哪里,大家一看就应该知道,要下载的话,也就是很简单的<a href='Excel文件路径'>文件下载</a>咯。
MDM主数据清洗和编码集成说明 绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。... 阅读详情

相关推荐

MaxEnt物种分布预测中的常见误区与优化技巧:如何提高模型准确率

本文深入探讨了MaxEnt物种分布预测模型从基础应用到精准预测的进阶实践。针对模型准确率提升,文章系统分析了环境变量筛选、模型参数调优、结果批判性解读等核心环节的常见误区,并提供了基于生态位模型原理的深度优化技巧,帮助研究者产出更可靠、可解释的预测结果。

weixin_29219539的博客 594

WPF中DataGrid的数据导出到Excel

【代码】WPF中DataGrid的数据导出到Excel。

wangjunlei的专栏 1034

C++实现SM4国密算法实战指南

通过以上实现,开发者可以快速在C++项目中集成SM4国密算法,满足金融、政务等领域的安全需求。实际部署时建议通过国家密码管理局的合规性检测,并定期更新密钥管理策略。库(支持国密算法),需提前安装并配置开发环境。

skyksksksksks的博客 1487

WPF将DataGrid内容导出到Excel

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

sinat_32836157的博客 3009

西门子1500 PLC与巴鲁夫RFID实战:从硬件接线到数据读写的完整流程

本文详细介绍了西门子S7-1500 PLC与巴鲁夫RFID系统集成的完整实战流程。内容涵盖从硬件选型、接线、PROFINET网络配置,到在TIA Portal中安装GSD文件、组态设备、分配地址,再到使用标准功能块(如FB31)进行程序架构设计、实现数据读写以及错误诊断。文章重点分享了硬件连接要点、软件配置步骤、数据块管理技巧以及调试中常见问题的解决方案,为工业自动化工程师实施RFID项目提供了清晰的指导。

weixin_29161785的博客 385

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

DataGrid数据导入excel或word

以下的C#代码:        private void Page_Load(object sender, System.EventArgs e)        {            SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");            con.Open();      

Mars的专栏 1908

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

将DataGrid数据写入Excel文件

将DataGrid的数据直接导入Excel里,以提供给用户下载,好像都是与下面代码类似的实现: 程序代码: this.EnableViewState   =   false;         System.Globalization.Cultu

chlygxy113的专栏 780

飞牛fnNAS免费内网穿透之zerotier篇

本文介绍了如何通过ZeroTier实现飞牛NAS的远程文件共享。首先,用户需要在ZeroTier官网注册账号并创建虚拟局域网。接着,分别在Windows和飞牛NAS上安装ZeroTier客户端,并通过SSH登录飞牛NAS进行配置。安装完成后,用户可以在ZeroTier页面中授权设备加入虚拟局域网。最后,通过Windows的“网上邻居”功能访问飞牛NAS的共享文件夹,实现跨局域网的文件共享。这种方法不仅适用于文件共享,还可以用于打印机共享和远程桌面连接。

dgnankai的专栏 2465

十七、SAP-采购订单(STO)

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 2067

【转】将DataGrid数据写入Excel文件。

document.title="将DataGrid数据写入Excel文件。 - "+document.title 前几天项目中有个地方需要将DataGrid的数据直接导入Excel里,以提供给用户下载,在网上找了下,好像都是与下面代码类似的实现: 程序代码:

zuoqiangxiang的专栏 633

【使用DeepSeek辅助Python接口性能自动化测试教程-实战教程】

访问DeepSeek官方网站,注册账号并获取API Key。此Key是调用DeepSeek API的必要凭证,务必妥善保管。安装时,注意勾选“Add Python to PATH”选项,以便系统能识别Python命令。确保你已安装Python 3.8或更高版本。会自动发现并执行所有以。

Dreams°的博客 2466

将DataGrid数据写入Excel文件,然后下载

 将DataGrid数据写入Excel文件。前几天项目中有个地方需要将DataGrid的数据直接导入Excel里,以提供给用户下载,在网上找了下,好像都是与下面代码类似的实现: 程序代码: this.EnableViewState   = 

goldhawk1010的专栏 880

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[转]将DataGrid数据写入Excel文件。

 前几天项目中有个地方需要将DataGrid的数据直接导入Excel里,以提供给用户下载,在网上找了下,好像都是与下面代码类似的实现: 程序代码: this.EnableViewState   =   false;         Sy

zuoqiangxiang的专栏 511

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 一个简单的分页控件,用来自定义分页用的
下一篇: 将数字金额转换为中文大写金额(在网上找的)
PPLUNCLE
博客等级 码龄24年 3粉丝 51原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值