用asp.net直接生成word excel,而且不下载,直接打开
使用asp.net写这么一个功能
通过asp.net生成一个word 或者 excel,并在写入想要加入的内容,要带格式的
然后不用下载,直接打开
求高手给一个比较详尽的例子
[解决办法]
找个控件接住~~
[解决办法]
能不能直接打开不是你控制得了的,要看客户端有没有安装相应的office软件,没有就会提示下载文件
[解决办法]
我的可用的代码(生成excel报表)
Dim xlBooks As Excel.Workbooks, xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
' Dim rowIndex, colIndex As Integer
Dim spath As String
spath = Server.MapPath("./")
spath = spath & "uploads\book1.xls"
'missing2 = missing.Value
xlApp.Visible = False
' xlBook = xlApp.Workbooks().Add
xlApp.DisplayAlerts = False
xlBooks = xlApp.Workbooks
xlBooks.Open(spath)
xlBook = xlBooks.Item(1)
'xlBook = xlApp.Application.Workbooks.Open("rep1.xlt", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)
xlSheet = xlBook.Worksheets("sheet1")
'处理数据 。。。。
ds = Funlib.MyQueryUsesqlDataSet(ss, "temp")
If ds.Tables("temp").Rows.Count > 0 Then
xlApp.Cells(1, 3) = Tb.Text.Trim & "报表"
xlApp.Cells(2, 3) = CStr(Funlib.getdate())
xlApp.Cells(3, 2) = "等级"
xlApp.Cells(3, 1) = "序号"
xlApp.Cells(3, 3) = "名称"
xlApp.Cells(3, 4) = "单位"
xlApp.Cells(3, 5) = "人"
xlApp.Cells(3, 6) = "得分"
xlApp.Cells(3, 7) = "备注"
For i = 0 To ds.Tables("temp").Rows.Count - 1
For j = 0 To ds.Tables("temp").Columns.Count - 1
xlApp.Cells(i + 4, j + 1) = ds.Tables(0).Rows(i)(j)
Next j
Next i
Else
lblstatus.Text = "没有符合条件的数据!"
End If
Dim spath2 As String
spath2 = Server.MapPath("./") & "uploads\book2.xls"
'
'RegisterClientScriptBlock("提示:", "<script language=javascript>alert('save file!')</script>")
xlBook.SaveAs(spath2)
' xlBook.Save()
' xlBook.SaveAs(spath, Excel.XlFileFormat.xlExcel9795, , , , , Excel.XlSaveAsAccessMode.xlNoChange, , , , , )
' xlBook.SaveAs(spath, , , , , , Excel.XlSaveAsAccessMode.xlNoChange, , , , , )
xlBook.Close()
' xlApp.Visible = True
xlApp.Quit()
xlApp = Nothing
GC.Collect()
Page.Response.Clear()
Response.Expires = 0
Response.Buffer = True
Page.Response.AddHeader("Content-Type", "application/ms-excel")
' Page.Response.AddHeader("Content-Disposition", "inline;filename=" & fn)
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" & Server.UrlEncode(spath2))
Page.Response.WriteFile(spath2)
Page.Response.End()
[解决办法]
首先机器需要安装office 或者引用第三方无需要安装office的dll
需要安装office
Response.Clear();
Response.ClearContent();
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
string strRealFile = System.Web.HttpUtility.UrlEncode("入库信息明细表_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls", System.Text.Encoding.UTF8);
strRealFile = strRealFile.Replace("+", " ");
Response.ContentType = "application/vnd.ms-excel; name="" + strRealFile + """;
Response.AppendHeader("Content-Disposition:", "attachment;filename="" + strRealFile + """);
Response.Write("<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">\r\n");
Response.Write("<head>\r\n");
Response.Write("<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r\n");
Response.Write("<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name></x:Name><x:WorksheetOptions><x:Selected/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->\r\n");
Response.Write("<div style='text-align:center;font-size:large;font-weight:bold'>入库信息明细表</div>\r\n");
Response.Write("</head>\r\n");
Response.Write("<body>\r\n");
//组成的数据 table表格都行。
Response.Write(hfExcelData.Value.Trim().Replace("<br><br>", ""));
Response.Write("</body>\r\n");
Response.Write("</html>\r\n");