【MVC】 页面导出 WORD, EXCEL
前端 js
function output() { var para = new Object(); para.html = getHtml("outputData"); para.type = "excel"; getAjaxText("/Test/SaveData", para, function (data) { if (data != "") { openWindow(stringFormat("/Test/Output?id={0}&type={1}&title={2}", data, para.type, "ceshi")); } }); }
后端 Action
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public ActionResult Output( string id, string title, string type) { var path = GetFilePath(id, type); if (!System.IO.File.Exists(path)) { return Redirect( "/Error/Index" ); } Response.ContentEncoding = Encoding.GetEncoding( "gb2312" ); var byteArray = System.IO.File.ReadAllBytes(path); return File(byteArray, "application/ms-" + type, title + GetType(type)); } [ValidateInput( false )] public ActionResult SaveData( string html, string type) { var sb = new StringBuilder(); sb.Append( "<!DOCTYPE html>" ); sb.Append( "<body>" ); sb.Append(html); sb.Append( "</body>" ); var byteArray = Encoding.Default.GetBytes(sb.ToString()); var guid = Guid.NewGuid(); System.IO.File.WriteAllBytes(GetFilePath(guid.ToString(), type), byteArray); return Content(guid.ToString()); } private static string GetType( string type) { if (type.ToLower().Trim() == "word" ) { return ".doc" ; } return ".xls" ; } |
MS Excel 导出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public class ExcelHelper { public static void ExportExcel(DataTable dt, bool noColumn = false ) { if (dt == null || dt.Rows.Count == 0) return ; var xlApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks; Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; if (!noColumn) { for ( int i = 0; i < dt.Columns.Count; i++) { worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName; var range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1]; range.Interior.ColorIndex = 15; range.Font.Bold = true ; } } for ( int r = 0; r < dt.Rows.Count; r++) { for ( int i = 0; i < dt.Columns.Count; i++) { worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i].ToString(); } } xlApp.Visible = true ; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?