ASP.NET导出XML格式的EXCEL,怎么做

yuji821 2017-07-22 12:28:21
asp.net可以导出xml文件格式excel,这个不是纯正的excel,大数据量导出excel的还比较快

这个导出xml格式的,代码具体怎么写

可以导出是excel2007吗
...全文
484 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
首推未来 2017-08-10
  • 打赏
  • 举报
回复
都在一列的话有没有加 “\n”
吉普赛的歌 2017-07-27
  • 打赏
  • 举报
回复
如果你的格式比较简单, 建议导出 CSV, 这个占用内存很小, 绝对高效。
yuji821 2017-07-26
  • 打赏
  • 举报
回复
引用 1 楼 FightForMyLove 的回复:
页面浏览 执行下载 代码截图 我太懂, 是要求导出xml格式excel的什么意思, xml不就是xml格式吗? 上传代码是数据导出 excel文件的。 下面贴代码 HttpResponse resp; resp = System.Web.HttpContext.Current.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", "attachment;filename=" + "导出文件名" + ".xls"); resp.ContentType = "application/vnd.ms-excel"; string colHeaders = "", ls_item = ""; //colHeaders存放标题 ls_item存放内容 //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符 colHeaders = "序号\t企业类型\t注册来源\t单位名称\t所属地区\t联系人\t注册时间\t大数据部门\t整合营销部门\t技术支持部门\t电子交易部门\t地图是否标注\t是否认证\t付费状态\n"; resp.Write(colHeaders); //写入标题 ls_item = "内容1\t内容1\t内容1\t内容1\t内容1\t内容1\t内1容\t内容1\t内容1\t内容1\t内容1\t内容1\t内容1\t内容1\n"; ls_item += "内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内2容\t内容2\t内容2\t内容\t内容2\n"; ls_item += "内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\n"; resp.Write(ls_item); //写入内容 resp.End(); //将结果输出到客户端
我按照你的写代码了,但是 只有一列了,就是只有一列了,列没有分开,就是一行所有列都显示在一列里面,请问是什么原因 public static void TableToExcel3(DataTable dt, string file) { StreamWriter sw = new StreamWriter(new FileStream(file, FileMode.Create), Encoding.UTF8); StringBuilder strCol = new StringBuilder(); StringBuilder strValue = new StringBuilder(); for (int i = 0; i < dt.Columns.Count; i++) { strCol.Append(dt.Columns[i].ColumnName); if (i < dt.Columns.Count - 1) { strCol.Append("\r"); } else { strCol.Append("\n"); } } sw.WriteLine(strCol); foreach (DataRow dr in dt.Rows) { strValue.Length = 0; for (int i = 0; i <= dt.Columns.Count - 1; i++) { strValue.Append(dr[i].ToString()); if (i < dt.Columns.Count - 1) { strCol.Append("\r"); } else { strCol.Append("\n"); } } sw.WriteLine(strValue); } sw.Close(); }
首推未来 2017-07-25
  • 打赏
  • 举报
回复
我还是没太懂你说的 “xml电子表格形式” 是什么意思? XML格式之前做缓存的时候到时创建过, 看你的意思是XML格式也会建, “xml电子表格形式” ???? 下面是并不完整的创建XML格式的例子

string relativePath = System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings["SystemXmlDirectory"] + folderPath + "/");
            string resultPath = "", splitstr1 = "", splitstr2 = "";
 
            string fullFilePath = Path.Combine(relativePath, resultPath + ".xml");

            bool result = false;
            XmlDocument xmlDoc;
            xmlDoc = new XmlDocument();
            XmlElement xmlelem;
            if (Security.commonSystemFileExists(resultPath + ".xml", folderPath))
            {
                xmlDoc.Load(fullFilePath);
                    XmlNode root = xmlDoc.SelectSingleNode("Xmltables");//查找<Xmltables>
                    XmlElement xe1 = xmlDoc.CreateElement("TreeNode");//创建一个<Node>节点
                    if (type == "City")
                    {
                        City treeNode = tempData as City;
                        xe1.SetAttribute("id", treeNode.id.ToString());//设置该节点id属性
                        xe1.SetAttribute("name", treeNode.name);//设置该节点name属性
                        xe1.SetAttribute("provinceId", treeNode.provinceId.ToString());//设置该节点provinceId属性
                        xe1.SetAttribute("hotCity", treeNode.hotCity.ToString());//设置该节点hotCity属性
                        xe1.SetAttribute("orderid", treeNode.orderid.ToString());//设置该节点orderid属性
                        xe1.SetAttribute("number", treeNode.number.ToString());//设置该节点orderid属性
                    }
                    root.AppendChild(xe1);
 
                result = true;
                //保存创建好的XML文档
                xmlDoc.Save(fullFilePath);
            }
首推未来 2017-07-24
  • 打赏
  • 举报
回复
我没太懂要求具体是什么, 到导出 excel2007 需要安装2007版本才行吧
首推未来 2017-07-24
  • 打赏
  • 举报
回复


页面浏览


执行下载


代码截图

我太懂, 是要求导出xml格式excel的什么意思, xml不就是xml格式吗?

上传代码是数据导出 excel文件的。
下面贴代码

HttpResponse resp;
resp = System.Web.HttpContext.Current.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + "导出文件名" + ".xls");
resp.ContentType = "application/vnd.ms-excel";
string colHeaders = "", ls_item = ""; //colHeaders存放标题 ls_item存放内容

//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符

colHeaders = "序号\t企业类型\t注册来源\t单位名称\t所属地区\t联系人\t注册时间\t大数据部门\t整合营销部门\t技术支持部门\t电子交易部门\t地图是否标注\t是否认证\t付费状态\n";

resp.Write(colHeaders); //写入标题

ls_item = "内容1\t内容1\t内容1\t内容1\t内容1\t内容1\t内1容\t内容1\t内容1\t内容1\t内容1\t内容1\t内容1\t内容1\n";
ls_item += "内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内2容\t内容2\t内容2\t内容\t内容2\n";
ls_item += "内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\t内容2\n";

resp.Write(ls_item); //写入内容

resp.End(); //将结果输出到客户端
yuji821 2017-07-24
  • 打赏
  • 举报
回复
引用 2 楼 FightForMyLove 的回复:
我没太懂要求具体是什么, 到导出 excel2007 需要安装2007版本才行吧
就是导出xml电子表格形式,可以用excel 2007打开的那样 我是海量数据导出excel,用普通的npoi,excel组件导出,都会报内存溢出的错误 所以想到导出xml电子表格的形式,大概类似下面的代码 public static StringBuilder ExportExcel(params DataTable[] dataTables) { var doc = new XmlDocument(); for (int i = 0; i < dataTables.Length; i++) { var table = dataTables[i]; var worksheetElem = doc.CreateElement("Worksheet"); worksheetElem.Attributes.Append(CreateAttribute(doc, "Name", (i + 1).ToString())); var tableElem = doc.CreateElement("Table"); tableElem.Attributes.Append(CreateAttribute(doc, "FullColumns", "1")); tableElem.Attributes.Append(CreateAttribute(doc, "FullRows", "1")); var headerElem = doc.CreateElement("Row"); foreach (DataColumn column in table.Columns) { var title = column.Caption; if (string.IsNullOrWhiteSpace(title)) { title = column.ColumnName; } var cellElem = doc.CreateElement("Cell"); cellElem.Attributes.Append(CreateAttribute(doc, "StyleID", "Header")); var dataElem = doc.CreateElement("Data"); dataElem.Attributes.Append(CreateAttribute(doc, "Type", "String")); dataElem.InnerText = title; cellElem.AppendChild(dataElem); headerElem.AppendChild(cellElem); } tableElem.AppendChild(headerElem); foreach (DataRow dr in table.Rows) { var rowElem = doc.CreateElement("Row"); for (int c = 0; c < table.Columns.Count; c++) { var cellElem = doc.CreateElement("Cell"); cellElem.Attributes.Append(CreateAttribute(doc, "StyleID", "Cell"));

62,046

社区成员

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

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

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

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