一:这种方法是把 DataSet的DataTable里面的数据拼接成html的<table></table>形式输出。
缺点:(1)这是一种伪Excel格式,用Excel打开的时候会提示 "格式与文件扩展名格式不一致" 每次都要手动确定打开,烦
(2)这样一个一个的循环,效率低
优点:直接从浏览器输出,用户可以选择保存路径
public string GetExportString(DataSet ds)
{
StringBuilder data = new StringBuilder();//因为循环很多,用 StringBuilder速度会快很多
//data = ds.DataSetName + "\n";
foreach (DataTable tb in ds.Tables)//多个表
{
//data += tb.TableName + "\n";
data.Append("<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\">");
//写出列名
data.Append("<tr style=\"font-weight: bold; white-space: nowrap;\">");
foreach (DataColumn column in tb.Columns)
{
data.Append("<td>");
data.Append(column.ColumnName);
data.Append("</td>");
}
data.Append("</tr>");
//写出数据
foreach (DataRow row in tb.Rows)
{
data.Append("<tr>");
foreach (DataColumn column in tb.Columns)
{
//if (column.ColumnName.Equals("证件编号") || column.ColumnName.Equals("报名编号"))
// data.Append("<td style=\"vnd.ms-excel.numberformat:@\">" + row[column].ToString() + "</td>");
//else
data.Append("<td>");
data.Append(row[column].ToString());
data.Append("</td>");
}
data.Append("</tr>");
}
data.Append("</table>");
}
return data.ToString();
}
public void ExportDsToXls(Page page, string fileName, DataSet ds)
{
page.Response.Clear();
page.Response.Buffer = true;
page.Response.Charset = "GB2312";
//page.Response.Charset = "UTF-8";
//如果输出中文名乱码的话,可以这样编码 文件名 HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)
page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + System.DateTime.Now.ToString("_yyMMdd_hhmm") + ".xls");
page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
page.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
page.EnableViewState = false;
page.Response.Write(GetExportString(ds));
page.Response.End();
}
//style="vnd.ms-excel.numberformat:@" 可以去除自动科学计数法的困扰
//输出为Table,能够最大限度的减少字段中数据对生成的文件格式的影响,在这里我没有处理数据中含有HTML标签的情况 在页面后台中,这样使用就可以了:
二:用到 Microsoft.Office.Interop.Excel dll,在服务器输出,输出的Excel在服务器,(如果是b/s架构的话还要想着怎么把这个导出的文件拿回来),而且如果出现异常或者中断的话,在服务器上面有很多excel的进程需要手动去关闭,要不过不了多久,服务器就挂掉了,所以这个方法比较适合用在WinForm的开发,不适合用在web的。
public void DataTabletoExcel(System.Data.DataTable tmpDataTable, string strFileName)
{
if (tmpDataTable == null)
return;
int rowNum = tmpDataTable.Rows.Count;
int columnNum = tmpDataTable.Columns.Count;
int rowIndex = 1;
int columnIndex = 0;
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
xlApp.DefaultFilePath = "";
xlApp.DisplayAlerts = true;
xlApp.SheetsInNewWorkbook = 1;
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
//将DataTable的列名导入Excel表第一行
foreach (DataColumn dc in tmpDataTable.Columns)
{
columnIndex++;
xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName;
}
//将DataTable中的数据导入Excel中
for (int i = 0; i < rowNum; i++)
{
rowIndex++;
columnIndex = 0;
for (int j = 0; j < columnNum; j++)
{
columnIndex++;
xlApp.Cells[rowIndex, columnIndex] = tmpDataTable.Rows[i][j].ToString();
}
}
//xlBook.SaveCopyAs(HttpUtility.UrlDecode(strFileName, System.Text.Encoding.UTF8));
xlBook.SaveCopyAs(strFileName);
}
最近在学习 python 有些基本配置的问题,经试验,可行,摘录下来
1、下载安装 Python
python-2.7.2.msi
http://www.python.org/download/
如下载 Python 2.7.2,安装目录为 C:\Python27
2、添加环境变量
path = C:\Python27
此步骤可实现在命令行下,不用进入 Python 目录即可执行 python.exe
3、下载 setuptools
注意对应 Python 的版本,完成后运行 exe 即可完成安装
setuptools-0.6c11.win32-py2.7.exe
http://pypi.python.org/pypi/pip
4、下载 pip
pip-1.0.2.tar.gz
http://pypi.python.org/pypi/pip
5、安装 pip
5.1 解压 pip-1.0.2.tar.gz
5.2 运行CMD,进入命令行
5.3 用CD命令进入 pip 解压目录
5.4 输入 "python setup.py install"
5.5 添加环境变量 path = C:\Python27\Scripts
6、安装distribute, nose, virtualenv
进入命令行,输入 "pip install package",package为安装包名称。
程序会自动下载相应的安装包,并进行安装,这步跟 Linux 一样。
从这文章摘录过来的:http://blog.csdn.net/lab2013/article/details/6876967
一、上传文件大小限制修改:
1 、运行iisreset –stop,关闭 iis admin service 服务。
2、 找到 windows\system32\inesrv\ 下的 metabase.xml 文件。
3、 用纯文本方式打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(比如10M即:10240000),默认为:204800,即:200K。
4 、存盘,然后运行iisreset重启 iis admin service 服务。
二、下载文件大小限制修改:
1、运行iisreset –stop,关闭 iis admin service 服务。
2、找到 windows\system32\inesrv\ 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(比如20M即:20480000),默认为4M。
4、存盘,然后运行iisreset重启 iis admin service 服务。
win2008+IIS7:
打开IIS管理器
双击“IIS”中的“ASP”
打开“配置 ASP 应该程序的属性”
展开“限制属性”;
修改“最大请求实体主体限制”的值,默认值为200000(即不到200KB);
把它修改为你想修改的大小,如:52000000(50MB)。
修改完成点击“应用”
异步请求核心js代码
function callServer(type, url, isAsync, user, passWord) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)
//数据传送方式即GET或POST,服务网页的URL,是否异步请求(缺省为True,即异步执行。False,为同步执行),用户名(可省略),用户口令(可省略)
xmlHttp.Open(type, url, isAsync, user, passWord);
//如果Open方法定义为POST,可以定义表单方式上传
if (type.toUpperCase == "POST") {
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.Send(strParamString);
}
if (isAsync) {//异步方法
xmlHttp.onreadystatechange = update;
xmlHttp.send();
}
else {//同步方法
xmlHttp.send();
if (xmlHttp.status == 200) {
//responseText:将返回消息作为文本字符串;
//responseBody:将返回消息作为HTML文档内容;
//responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
//responseStream:将返回消息视为Stream对象
var ret=xmlHttp.responseText;//这是同步请求回来的数据
}
}
}
//异步回调函数
function update() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;//这就是异步请求回来的数据
}
}
后台核心代码(建一个专门处理请求的aspx页面):
protected void Page_Load(object sender, EventArgs e)
{
string ret = "This is Microsoft.XMLHTTP";//这里就是你所要组织返回来的数据
Response.Write(ret);
Response.End();
}
前台调用代码:
var url = "WebServer.aspx";//可以附带参数,然后在后台获取参数
callServer("post", url, true, "", "");
例子,纯代码,仅供参考
/// <summary>
/// 邦定根节点
/// </summary>
public void BindTreeView(DataTable dt)
{
DataTable aldt = GetTreeList("").Tables[0];
//菜单状态
tv.Nodes.Clear(); // 清空树
if (Request.QueryString["Type"] == "User")
{
TreeNode rootnode = new TreeNode();
rootnode.Text = "--所有部门--";
rootnode.Value = "";
rootnode.ImageUrl = "../img/0_Person.gif";
rootnode.NavigateUrl = "../User/AdminUser.aspx";
rootnode.Target = "mainFrame";
tv.Nodes.Add(rootnode);
}
foreach (DataRow r in dt.Rows)
{
string nodeid = r["dept_code"].ToString();
string text = r["dept_name"].ToString();
this.tv.Font.Name = "宋体";
this.tv.Font.Size = FontUnit.Parse("9");
//权限控制菜单
TreeNode rootnode = new TreeNode();
rootnode.Text = text;
rootnode.Value = nodeid;
rootnode.ImageUrl = "../img/0_Person.gif";
if (Request.QueryString["Type"] == "User")
{
rootnode.NavigateUrl = "../User/AdminUser.aspx?dept_code=" + nodeid;
}
else
{
rootnode.NavigateUrl = "DeptRight.aspx?dept_code=" + nodeid;
}
rootnode.Target = "mainFrame";
tv.Nodes.Add(rootnode);
string sonparentid = nodeid;
CreateNode(sonparentid, rootnode, aldt);
}
}
/// <summary>
/// 邦定任意节点
/// </summary>
public void CreateNode(string parentid, TreeNode parentnode, DataTable dt)
{
DataRow[] drs = dt.Select("pare_code= '" + parentid + "'");//选出所有子节点
foreach (DataRow r in drs)
{
string nodeid = r["dept_code"].ToString();
string text = r["dept_name"].ToString();
//treeview set
this.tv.Font.Name = "宋体";
this.tv.Font.Size = FontUnit.Parse("9");
TreeNode node = new TreeNode();
node.Text = text;
node.Value = nodeid;
node.ImageUrl = "../img/0_Person.gif";
if (Request.QueryString["Type"] == "User")
{
node.NavigateUrl = "../User/AdminUser.aspx?dept_code=" + nodeid;
}
else
{
node.NavigateUrl = "DeptRight.aspx?dept_code=" + nodeid;
}
node.Target = "mainFrame";
//node.Expanded=true;
//node.SelectAction = TreeNodeSelectAction.Expand; //和ASP.NET1.1中TREEVIEW的SelectExpands属性等效
string sonparentid = nodeid;// or =location
if (parentnode == null)
{
tv.Nodes.Clear();
parentnode = new TreeNode();
tv.Nodes.Add(parentnode);
}
parentnode.ChildNodes.Add(node);
CreateNode(sonparentid, node, dt);
}
}

