有关.net服务器部署的一些问题
昨天和同事一起部署最近完工的两个项目,出现了一些问题,现汇总如下:
图1
在图1 中显示尝试读取或写入受保护的内存,真郁闷。暂时还没找到好的解决办法。
图2
图2 中的问题应该和OFFICE程序集有关系,前提要安装excel 2003 PIA的。解决起来还算顺利。
EXCEL文本格式快速设置
当需要把Excel里的单元格格式设置为文本形的时候,可以如下操作:突出显示数字列,然后使用“数据”->“分列”命令。在向导的第 1 页中,选择适当的文件类型(这将很可能是“分隔符号”)。在第 2 页中,删除所有可能使数据保持在一列内的列分隔符。在第 3 页中,单击“列数据格式”下的“文本”以表明此列是文本。
提示完成此向导后,可能会在一个或更多单元格中看到称为错误指示器的小三角形。如果感觉这些三角形令人分心,则可以选择此列,然后通过仅删除一个三角形将其全部删除。
以上功能的作用在于C#读取EXCEL的时候由于选择的命令不同,为数字格式的单元格内容无法读取,这时候就需要设置为文本形式的,但由于客户给的表是有数据的,那设置起来就不能通过拖拽批量生成了,确实很麻烦,按照上述办法也只是能一列一列的操作,要是批量操作可能还需要VBA的帮忙了,下面要好好学习一下了。
有关Gridview下载乱码以及找不到文件的解决办法
客户服务器是2000系统,有时候找不到要下载的文件,是名称解码的问题,我先前是用Gridview绑定文件名和地址的,后来用流文件输出的方式,通过添加Select事件绑定到流输出,问题迎刃而解了,在下面的代码中尤为重要的是 HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes(fileName ));只有这样才不会有乱码,不知道是否还有更好的办法啊。
private void DownFile(string filePath, string fileName)
{
FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
filename= HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes(fileName ));
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
string excelname = GridView1.Rows[e.NewSelectedIndex].Cells[1].Text;
DownFile(Server.MapPath("//wendang//"+excelname), excelname);
}