62,243
社区成员




您尝试打开的文件“xxx.xls”的格式与文件扩展名指定的格式不一致。打开文件前请验证文件没有损坏且来源可信。是否立即打开该文件?
xxx.xls 可能含有与 电子表格 2003 不兼容的功能。是否保持工作簿的这种格式?
• 如要保持这种格式,去掉所有不兼容的功能,请单击“是”。
• 如要保留这些功能,请单击“否”。然后再用最新 Excel 格式保存一份副本。
• 如想知道哪些内容会丢失,请单击“帮助”。
是(Y) 否(N) 帮助(H)
/// <summary>
/// 导出Excel文件可定制导出列名
/// </summary>
/// <param name="dt"></param>
/// <param name="hdt">数据库列名与导出显示列名映射表</param>
private void Export(DataTable dt, Hashtable hdt)
{
DataToExcel dte = new DataToExcel();
string folder = "~/Excel/";//网站根目录应有Excel文件夹存放导出文件
string path = MapPath(folder);
string filename = "";
filename = dte.DataExcel(dt, "学生", path, hdt);
byte[] down = null;;
if (filename != "")
{
try
{
//下载的超连接
down = SaveAndOpenExcelFile(folder, filename, "学生信息表");
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Type", "application/ms-excel");
Response.AddHeader("Content-Disposition",
"attachment; filename=" + "stuInfo.xls" + "; size=" + down.Length.ToString());
Response.Flush();
Response.BinaryWrite(down);
Response.Flush();
Response.End();
}
catch
{
ClientScript.RegisterStartupScript(this.GetType(), "Copy", "alert('文件操作出错');", true);
}
}
}
/// <summary>
/// 使服务器没有多余的导出文件
/// </summary>
/// <param name="folder">相对网站根目录的文件夹</param>
/// <param name="filename">生成临时文件</param>
/// <param name="tableName">用户下载文件名</param>
/// <returns></returns>
public byte[] SaveAndOpenExcelFile(string folder, string filename, string tableName)
{
string FilePath = Server.MapPath(folder);
File.Copy(FilePath + "\\" + filename, FilePath + "\\" + tableName + ".xls", true);
FileStream fs = new FileStream(FilePath + "\\" + tableName + ".xls", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] byteTemp = br.ReadBytes((int)fs.Length);
fs.Close();
File.Delete(FilePath + "\\" + filename);
return byteTemp;
}
}