Excel文档保存默认类型为什么是网页

RichardYE0922 2010-09-16 04:07:02
1.asp.net网页导出为Excel文档,后缀是.xls,是excel2003的。
2.用excel2007打开后,按另存为,保存类型默认是网页(*.htm;*.html)。
如何才能使默认保存类型为Excel工作薄(*.xlsx)希望各位高手帮忙解决下。
...全文
1345 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RichardYE0922 2010-09-20
  • 打赏
  • 举报
回复
补充打开时的提示与保存时的提示:

V-Far 2010-09-20
  • 打赏
  • 举报
回复
office的智能识别???
因为你是拼接字串生成xls文件的.
RichardYE0922 2010-09-20
  • 打赏
  • 举报
回复
RichardYE0922 2010-09-20
  • 打赏
  • 举报
回复
我EXCEl导出是成功了的,只是用EXCEl2007打开后默认保存类型是网页,我想保存时默认为EXCEL类型,没有高手解决下吗?
EXCEl导出代码如下:

public static void HtmlExportFile(HttpResponse response, ArrayList Controls, string Coding, string FileName, string style)
{
HtmlExportFile(response, Controls, Coding, FileName, "application/ms-excel", style);//application/ms-excel;application/octet-stream;application/ms-word
}

public static void HtmlExportFile(HttpResponse response, ArrayList Controls, string Coding, string FileName, string FileType, string style)
{
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.AddHeader("content-disposition", "attachment;filename=" + FileName);
//Response.Charset = Coding;

response.ContentType = FileType; //"application/octet-stream";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter stringWrite = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Control temp = null;
for (int i = 0; i < Controls.Count; i++)
{
temp = Controls[i] as Control;
temp.RenderControl(htmlWrite);
}
//response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
response.Write(style);
response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");// GetEncoding(Coding);// GetEncoding("GB2312");//.UTF8;// GetEncoding("UTF-8");
response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
response.Write(stringWrite.ToString());
response.Flush();
response.Close();
response.End();
}
daifangci 2010-09-16
  • 打赏
  • 举报
回复
我做过类似的项目只要你获取到数据库的list的数据集了就可以生成
这句是调用创建保存为本地资源的
CreateExcel(ToDataSet(list), "1", "ShengHao.xls");


下面的是成员方法,看看适合你的要求不

public static DataSet ToDataSet(IList p_List)
{
DataSet result = new DataSet();
DataTable _DataTable = new DataTable();
if (p_List.Count > 0)
{
PropertyInfo[] propertys = p_List[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
_DataTable.Columns.Add(pi.Name, pi.PropertyType);
}

for (int i = 0; i < p_List.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(p_List[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
_DataTable.LoadDataRow(array, true);
}
}
result.Tables.Add(_DataTable);
return result;
}

public void CreateExcel(DataSet ds, string typeid, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
int i = 0;

//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if (typeid == "1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < dt.Columns.Count - 1; i++)
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.Table.Columns.Count - 1; i++)
ls_item += row[i].ToString() + "\t";
ls_item += row[i].ToString() + "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
}
else
{
if (typeid == "2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();


}
czhhlove 2010-09-16
  • 打赏
  • 举报
回复
用2007打开的时候,把鼠标放在"另存为"上,右边就会自动出现一个框,点击最上面的就行了,
RichardYE0922 2010-09-16
  • 打赏
  • 举报
回复
默认是网页类型,希望是xlsx类型,这样就多了一次选择类型的操作,用户不想选
czhhlove 2010-09-16
  • 打赏
  • 举报
回复
你是想把什么数据导到Excel表里面?是不是数据成功导入到Excel2003里面了?如果是这样的话,另存为的时候选择.xlsx后缀名的不就行了吗?为什么一定要默认呢?lz说的有点不清楚,还是我没理解lz的意思?
beg200710 2010-09-16
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100602/17/98A331DF-ED0C-42A1-B477-3F37835E42B9.html

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧