2013年11月7日星期四

记一篇随笔被移出博客园首页的感想 - lhb62232397

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
记一篇随笔被移出博客园首页的感想 - lhb62232397  阅读原文»

此篇随笔本人也将发到博客园首页,希望能留在首页,也只是希望。

此处只是记载本人书写的一篇随笔被移除首页对本人所产生的感想,不含任何对他人、第三方不满的心理,更不会存在心理攻击。先谈感想,后链接随笔。

  不知道从何时起,本人喜欢写随笔,原意只是做一个不会丢失的笔记本,以便自己闲暇时间翻看学习使用。因为本人一直有浏览博客园首页的习惯,大概是一个月前吧,突然萌生了将自己写的随笔也发表在首页,然后就一发而不可收拾,接连将自己平时总结及笔记弄到博客园首页,看到原本自己写的随笔的阅读量只是几十,现在变成了几百,心中自豪之情油然而生。所以这之后每次写完随笔,发布到首页,时不时的就会去查看一下,有时阅读量增加一位数心中就非常窃喜,见笑了,有点土鳖了。

前几天发布了一篇关于WPF基础类型的随笔:http://www.cnblogs.com/ysyn/p/3408201.html

可以说一篇随笔,不管是质量好的还是差的,最起码也需要3个小时的书写。自己写完了,同样是发布到首页,但中午吃完饭后,再次查看时,博客园居然收到一个短消息,被告知随笔被移除首页,当时的心情可想而知。随后肯定是反省,反省随笔的质量,随笔书写的方式,等等。突然,心中一滞,我写随笔是为了什么?

我写随笔是为了什么?

刚开始写第一篇随笔时,目的是做一个不会丢失的笔记,以便自己学习。

后来,想到发布到首页,让更多初学者,新手能够看到自己用心整理的学习笔记。

再后来,看到阅读量在上升,感觉写随笔就是为了赚取阅读量。

再再后来,醒悟了,写随笔本质上是为了自己的提升。在自己提升的基础上,能方便新手、方便初学者那样更好了。


本文链接:http://www.cnblogs.com/ysyn/p/3414008.html,转载请注明。

无插件,无com组件,利用EXCEL、WORD模板做数据导出(一) - 大侠酷裤马路  阅读原文»

  本次随笔主要讲述着工作中是如何解决数据导出的,对于数据导出到excel在日常工作中大家还是比较常用的,那导出到word呢,改如何处理呢,简单的页面导出问题应该不大,但是如果是标准的公文导出呢,要保证其基本格式,如红头、抬头、文号等等格式的限制我们又该如何处理呢?

主要原理:

1、利用excel、word做好模板,在模板中设置关键字

2、在程序中调用模板,替换关键字

3、将替换后的模板作为导出文件输出

一、导出到EXCEL,在此处先从简单的入手,先描述如何利用excel做导出。步骤如下:

1、用excel2007随便创建一个excel文件,打开添加如下数据:

2、点击另存,将excel文件另存为xml格式文件,选择2003xml格式,如下图:

3、右键用记事本打开刚刚另存到xml文件,观察xml内容会发现其妙之处,如下图:

如上图所示,注意观察,每一个WorkSheet都用了一段xml代码来表示,方框部分为我们写入的数据,圆圈部分为我们要处理的重要部分。

小圆圈内的2表示当前数据2行,大圆圈表示我们看到的三行三列数据,因此我们要做的就是将我们要导出到数据写成圆圈中的格式就行了。

4、改进xml文件,创建关键字,如下图:

如上图所示,我们创建了两个关键字,具体含义不多说。

最后将创建好的xml文件,也就是你的excel模板可以放入到项目中了,接下来要做的就是将数据生成并按照标准格式输出,进行替换关键字即可。

5、数据生成并输出,如下所示:

public byte[] GetData(string path, string tempName)
{
//实例化内存流
MemoryStream fileStream = new MemoryStream();
//写文件流
StreamWriter fileWriter = new StreamWriter(fileStream);
//读文件流
StreamReader fileReader = new StreamReader(path, System.Text.Encoding.UTF8);
//读取整个文件的内容
string tempStr = fileReader.ReadToEnd();
//得到要导出的信息
DataTable dt = airport.GetDataView();
//定义变量获取表的数据行数
int rows = 0;
//定义StringBuilder变量来存储字符串
StringBuilder sb = new StringBuilder();
//判断表是否有数据
if (dt != null && dt.Rows.Count > 0)
{
//给变量赋值
rows = dt.Rows.Count;
int num = rows + 1;//此处1表示模板中表头的行数,且默认为1,可自行增加表头并定义
if (tempStr.IndexOf("+#RowCount#+") > 0)
{
tempStr
= tempStr.Replace("+#RowCount#+", "" + num + "");
}
//开始循环生成标准字符串
for (int i = 0; i < rows; i++)
{
sb.Append(
"<Row>\n"
+ "<Cell><Data ss:Type=\"String\">" + dt.Rows["Name"] + "</Data></Cell>\n"
+ "<Cell><Data ss:Type=\"String\">" + dt.Rows["Sex"] + "</Data></Cell>\n"
+ "<Cell><Data ss:Type=\"String\">" + dt.Rows["Age"] + "</Data></Cell>\n"
+ "</Row>\n");
}
if (tempStr.IndexOf("+%Data%+") > 0)
{
tempStr
= tempStr.Replace("+%Data%+", sb.ToString());
}
}
fileWriter.WriteLine(tempStr);
fileWriter.Flush();

byte[] bytes = fileStream.ToArray();

fileStream.Close();
fileWriter.Close();
fileReader.Close();

return bytes;
}

如上所示,创建获取数据,并返回我们要输出的字符串,并转成二进制流,具体操作因人而异。接下来调用此方法替换数据,并输出excel新文件。

protected void btnExport_Click(object sender, EventArgs e)
{
byte[] bytes = GetData(Server.MapPath("xml模板的路径"), "");

//实现下载
Response.AddHeader("Content-Type", "application/octet-stream");
Response.Buffer
= true;
Response.ContentType
= "*/*";
Response.AddHeader(
"Content-Disposition", "阅读更多内容

没有评论:

发表评论