学习总结——实现生成excel表格(方法二)

本方法主要是利用了反射,具体代码如下:

ContractedBlock.gifExpandedBlockStart.gifCode
        public static int ExportTohtmlExcel__dksq_view(string strsql)
        {

            
//贷款申请信息获得
            BLLibrary.BView_jbxx_dksq viewdal = new BView_jbxx_dksq();
            IList
<View_jbxx_dksqEntity> views = viewdal.GetView_jbxx_dksqsbyCondition(strsql);

            StringBuilder str 
= new StringBuilder();

            str.Append(
"<head><meta http-equiv=Content-Type content='text/html; charset=UTF8'></head><body><table   border=1  cellspacing=2   cellpadding=2   width=50%   align=center>");

            
///输出表
            bool flag = true;

            
//输出表头
            string[] biaoti = { "身份证号""姓名""性别""出生日期""户籍地1""户籍地2""现住址1""现住址2""现详细地址邮政编码""毕业中学""毕业中学邮编""家庭电话""移动电话""宿舍电话""共同借款人姓名""共同借款人身份证号""与借款人关系""共同借款人户籍地1""共同借款人户籍地2""共同借款人现住址1""共同借款人现住址2""共同借款人邮政编码""共同借款人工作单位""共同借款人职务""共同借款人固定电话","大学名称",  "共同借款人移动电话""专业""年级""院系""学历""学制""高校所属省份""借款人学校类别1""借款人学校类别2",
                                  
"申请成功次数""直管县""学校开户行","学校帐户名","学校帐号","学校联系人","学校联系电话","申请原因","申请详细原因","申请次数","申请贷款金额","申请批准金额","申请期限","申请学年","高校要求报道日期","申请状态","院校代码"};
foreach (View_jbxx_dksqEntity view in views)
            {


                PropertyInfo[] Properties 
= view.GetType().GetProperties();//利用反射
                
//定义表头
                if (flag)
                {
                    str.Append(
"<tr   bgcolor=#cccccc>");
                    
for (int i = 0; i < biaoti.Length; i++)
                    {
                        str.Append(
"<td >" + biaoti[i] + "</td>");
                    }
                    str.Append(
"</tr>");

                    flag 
= false;
                }
//输出表内容
                str.Append("<tr>");
                
foreach (PropertyInfo pi in Properties)//对每个字段属性进行循环
                {


                    
switch (pi.Name)//对于不同的属性进行特定的调整(翻译、替换、格式化等)
                    {
                        
//学要加"'"防止科学计数法
                        case "userid":
                        
case "gj_sfzid":
                        
case "jk_homeTelephone":
                        
case "jk_mobileTelephone":
                        
case "jk_susheTelephone":
                        
case "gj_homeTelephone":
                        
case "gj_mobileTelephone":
                        
case "xxzh":
                        
case "xxlxdh":
                            {
                                str.Append(
"<td  style='mso-number-format:\"\\@\"'>" + pi.GetValue(view, null).ToString() + "</td>");
                                
break;
                            }

                        
//日期型转换
                        case "universitystart_date":
                        
case "jk_BirthDate":
                        
case "d_dkrq":
                        
case "d_hkrq":
                        
case "byrq":
                            {

                                
string datestr = ((DateTime)(pi.GetValue(view, null))).ToShortDateString();
                                
if (datestr != "9999-1-1")
                                {
                                    datestr 
= "'" + datestr;
                                }
                                
else
                                {
                                    datestr 
= "";
                                }
                                str.Append(
"<td>" + datestr + "</td>");
                                
break;
                            }
                        
case "jk_sex":
                            {
                                
string jk_sex = (string)pi.GetValue(view, null);
                                
if (jk_sex == "1")
                                {
                                    jk_sex 
= "";
                                }
                                
else
                                {
                                    jk_sex 
= "";
                                }
                                str.Append(
"<td>" + jk_sex + "</td>");
                                
break;
                            }

                        
default:
                            {
                                str.Append(
"<td>" + pi.GetValue(view, null+ "</td>");

                                
break;
                            }
//默认直接用取得的值
                    }

                }
                str.Append(
"</tr>");
            }
            str.Append(
"</table></body></html>");

            
//输出文档
            HttpContext.Current.Response.ClearContent();

            HttpContext.Current.Response.AddHeader(
"content-disposition""attachment; filename=MyExcel_dksq.xls");
            HttpContext.Current.Response.ContentEncoding 
= System.Text.Encoding.UTF8;
            HttpContext.Current.Response.ContentType 
= "application/excel";
            HttpContext.Current.Response.Write(str);
            HttpContext.Current.Response.End();
            
return 0;
        }

 另外还有个方法,但是不是很推荐:

ContractedBlock.gifExpandedBlockStart.gifCode
        public static int ExportToExcel_FirmReportRp1(DataSet ds)
        {
            
//报表文件名
            string reportName = HttpContext.Current.Server.MapPath(REPORTPATH) + RP1;
            
//样表文件名
            string templateName = HttpContext.Current.Server.MapPath(TEMPLATEPATH) + RP1;
            
#region 是否存在样表
            
if (!File.Exists(templateName))
            {
                
return -1;
            }
            
#endregion
            
#region 如果已经存在此报表,则删除报表,将样表复制到报表文件
            
if (File.Exists(reportName)) File.Delete(reportName);
            File.Copy(templateName, reportName);
            
#endregion

            Microsoft.Office.Interop.Excel.Application excel 
= new Microsoft.Office.Interop.Excel.Application();


            
object oMissiong = System.Reflection.Missing.Value;
            excel.Visible 
= false;//true or false 
            Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open(reportName, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
            Microsoft.Office.Interop.Excel.Worksheet sheet 
= (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;

            System.Data.DataTable table 
= ds.Tables[0];
            
int rowIndex = 12;               //总计所在行号
            Range rng;
            
foreach (DataRow row in table.Rows)
            {
                rowIndex
++;
                
//"期末总人口"
                rng = sheet.get_Range("B" + rowIndex, oMissiong);
                rng.Value2 
= row["B"].ToString();
                
//"期初总人口"
                rng = sheet.get_Range("C" + rowIndex, oMissiong);
                rng.Value2 
= row["C"].ToString();
                rng 
= sheet.get_Range("D" + rowIndex, oMissiong);
                rng.Formula 
= "=SUM(E" + rowIndex + ":F" + rowIndex + ")";
                
//出生人数-男
                rng = sheet.get_Range("E" + rowIndex, oMissiong);
                rng.Value2 
= row["E"].ToString();
                
//出生人数-女
                rng = sheet.get_Range("F" + rowIndex, oMissiong);
                rng.Value2 
= row["F"].ToString();
            }
            
#region 处理最后一行的签名
            rowIndex
++;

            rng 
= sheet.get_Range("A" + rowIndex, oMissiong);
            rng.Value2 
= "填表日期:";

            
//合并BC两列,填充日期
            rng = sheet.get_Range("B" + rowIndex, "C" + rowIndex);
            rng.Merge(
true);
            rng.Value2 
= DateTime.Now.ToShortDateString();
            
//主管领导
            rng = sheet.get_Range("F" + rowIndex, oMissiong);
            rng.Value2 
= "主管领导:";
            
//填表人
            rng = sheet.get_Range("L" + rowIndex, oMissiong);
            rng.Value2 
= "填表人:";
            
#endregion

            book.Save();
            book.Close(
true, reportName, true);            
            excel.Quit();
            KillProcess.Kill(excel);
//kill掉当前excel进程
            excel = null;
            
return 0;
}

 

转载于:https://www.cnblogs.com/lostcosta/archive/2009/10/29/1592346.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux svn cleanup 用法,SVN命令之清理命令(clean up)的功能及使用技巧

SVN的清理命令&#xff0c;我们经常会使用。这个命令的原理&#xff0c;我们还是有必要深究一下的。当SVN改变你的工作拷贝(或是.svn中的任何信息)&#xff0c;它会尽可能的小心。在进行任何修改操作时&#xff0c;SVN都会把日志记录到日志文件中&#xff0c;然后执行log文件中…

python string转int_我用Python搞资源 [ 02 ]

这不是教程&#xff0c;所以没有基础的你看不懂也很正常&#xff0c;去后面点个赞就好。一. 目标链接上一个推送处理了一个不带密码的蓝奏云分享链接&#xff0c;这回处理一下带密码的分享链接。https://lanzoux.com/b015ybdmh 密码:9n8z为了能有一个合适的链接来练手&…

c语言数字字体的格式,c语言—— 格式控制符—— 数据类型——相对应的字节数...

这是转义scanf("%lf", &r);枚举类型&#xff1a;https://www.cnblogs.com/bhlsheji/p/5204541.htmlANSI C标准基本类型的字长与范围基本类型 字长 范围char(字符型) 1字节 -128~127int(整型) 2字节 -32768~32767float(单精度浮点型) 4字节 约精确到6位数double(双…

电子设计大赛作品_第十四届电子设计大赛圆满结束!

为了激发学生的创造性&#xff0c;加强学生动手能力的培养和工程实践的训练&#xff0c;提高学生针对实际问题进行电子设计制作的综合能力&#xff0c;我院于2020年11月6号下午12点50分举行“安阳工学院第十四届电子设计大赛决赛”。1本次比赛由12组热爱电子设计的同学组成。由…

向左滚动,每次滚动的长度可以设置,然后暂停后继续滚动

支持FF等所有浏览器 向左滚动&#xff0c;每次滚动的长度可以设置&#xff0c;然后暂停后继续滚动 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML>&l…

thinkserver rd650管理口地址_路由器WAN口和LAN口有什么区别【区别介绍】

现在一般家庭上网采用ADSL电话线上网的较多&#xff0c;而且家里一般都有好几台电脑&#xff0c;那么如何使几台电脑同时上网呢?这就要用到宽带路由器了&#xff0c;一般情况下宽带路由器上面有好几个网线插口&#xff0c;这些网线插口上有的标有WAN&#xff0c;有的网口标有L…

兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc

您所在位置&#xff1a;网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计兰州交通大学C语言课程设计报告(完整版).doc12页本文档一共被下载&#xff1a;次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整…

导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用

转自EXCEL不加班今天分享文本之王TEXT函数的4个运用&#xff0c;跟着卢子一起来操作。1.发票号都是8位&#xff0c;从系统导出后前面的0消失&#xff0c;如何补齐&#xff1f;常规格式发票号前面的0都会消失&#xff0c;只有文本格式情况下的0才不会消失。事先录入的话&#xf…

c 语言读取注册表信息,C++读取注册表的实现方法

C读取注册表GetRegValue.h:#ifndef __GETREGVALUE_H__#define __GETREGVALUE_H__#include //---------------------------------------------------------------//function:// GetRegValue 获取注册表中指定键的值//Access:// public//Parameter:// [in] int nKeyType - 注册表…

stm32按键矩阵代码_STM32 学习笔记---1

既然打算学&#xff0c;基础的东西元件的得知道是什么&#xff0c;这样写代码的时候才能知道自己在干什么&#xff01;ROM 和Flash 断电后都能储存数据&#xff0c;RAM则不能其实闪存&#xff08;flash&#xff09;是ROM的一种它的全名---FLASH EEPROM EEPROM---电可擦除可编程…

c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形&#xff0c;所以花了点时间研究各种包络提取的算法。所谓包络检测又叫幅度解调&#xff0c;在许多领域都有重要的应用。如果载波信号是确定的&#xff0c;那么通常可以采用同步解调的方式&#xff0c;这种方式的信噪比最好&#xff0c;…

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时&#xff0c;总是被截断&#xff0c;无法执行的错误解决方案 1 典型的错误信息如下&#xff1a; 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断&#xff0c;或者一个或多个…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…

cocos2dx 字体外发光_在电致发光研发领域,选择有机材料是基于哪些原因?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

WebOS + WebIM

此已文重新编辑.WebOSWebOS 是基于web技术实现的类似于桌面操作系统交互风格的应用程序。实现WebOS的主要技术可以是JavaScript或者是RIA(Flex\SL)。在JS领域内的最强大和最著名的可能要数eyeos了。本文所述的WebOS也是采用JavaScript开发的。图1&#xff1a;此应用主要是用于大…

雨滴桌面rainmeter素材_win10 桌面如何做到清爽好看?这篇教程给你答案

当一个电脑用的时间长了以后&#xff0c;难免就会变得非常杂乱。伟大的领袖曾经说过&#xff0c;要像倒腾自己的发型一样折腾好自己的桌面。道理咱都懂&#xff0c;可是大家动起手来就傻眼了&#xff0c;这啥玩意啊&#xff0c;算了吧&#xff0c;还是不弄了。本着慈悲为怀&…

学习委托

简单实例 1 publicclasstest2 {3 publicdeledate voidMenuHandler(stringusername);4 publicvoidMenuHandlershixian(stringusername)5 {6 response.write(username);7 }8 publicvoidshow()9 {10 MenuHandler mhMenuHandlershixian;11 mh("majuan");12 }13 publicsta…

ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...

很多朋友问到关于ups相关的计算&#xff0c;其实关于ups方面的计算还是挺多&#xff0c;ups无论是接空开&#xff0c;还是连接电缆&#xff0c;以及选择电池&#xff0c;都可能需要计算它的电流或功率等&#xff0c;那么今天我们来详细了解下ups的相关计算。一、ups空开及电缆的…

多层感知机和神经网络的区别_学习笔记-从神经元到神经网络

人的大脑神经网络的复杂程度有人说&#xff0c;只有银河系可以比拟。总所周知&#xff0c;神经网络就是模仿大脑神经网络用数学知识构造的模型。单个神经元还是比较简单的。神经元一个神经元有树突&#xff0c;轴突&#xff0c;和细胞体等部分。树突接受输入信息&#xff0c;细…

华为鸿蒙os电视测评,高端技术下放毫不吝啬!华为智慧屏SE系列评测:鸿蒙OS让入门大屏也好用...

一、前言&#xff1a;高起点的华为智慧屏 终究走向更多大众用户智慧屏从概念落地为产品之后&#xff0c;一直都是华为旗下终端产品当中一个相当重要的角色&#xff0c;特别是在手机业务受阻的当下&#xff0c;更是成了全场景智慧化战略的核心支撑之一。凭借高品质的影音娱乐、花…