• C#导入导出Excel(一)


    C#操作Excel导入导出方法一,根据项目要求,对Excel操作有多重方法,有的是类库自己编程设计格式,有的是JS根据表格的格式样式直接导出。

     现在介绍的是直接下载型:

    根据页面显示的表格中Html格式,直接下载到Excel(相当于把整个表格直接拷贝到Excel中)

    Html格式如下:

      <div id="ta">
                <input type="button" class="btn btn-primary btn-mini" onclick="javascript: method1('tableExcel')" value="导出Excel">
                <table id="tableExcel" class="table table-hover">
                    <thead>
                        <tr>
                            <th>Id</th>
                            <th colspan="2">UserName</th>
                            <th>Email</th>
                            <th>Address</th>
                            <th>Mobile</th>
                            <th>CreateDate</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach (var u in ViewBag.Users)
                        {
                            <tr>
                                <td>@u.UserId</td>
                                <td>@u.UserName</td>
                                <td>@u.UserName</td>
                                <td>@u.Email</td>
                                <td>@u.Address</td>
                                <td>@u.Mobile</td>
                                <td>@u.CreateDate</td>
                                <td><a href="@Url.Action("Delete", "Home")?id=+@u.UserId" onclick="javascript:return p_del()">Delete</a></td>
                            </tr>
                        }
                    </tbody>
                </table>
            </div>

    图例:

    导出JS:

     function method1(tableid) {//整个表格拷贝到EXCEL中
    
            //var len = $("table tr").length;
            //if (len > 1) {
            //    $("tr[id='" + (len - 1) + "']").remove();
            //}
            //$('table>th:last').hide();
            //$('table>td:last').hide();
            //var len = $("table tr").length;
            $("table tr th:last-child").remove();
            $("table tr td:last-child").remove();
            
           
            if (getExplorer() == 'ie') {
                var curTbl = document.getElementById(tableid);
                var oXL = new ActiveXObject("Excel.Application");
    
                //创建AX对象excel
                var oWB = oXL.Workbooks.Add();
                //获取workbook对象
                var xlsheet = oWB.Worksheets(1);
                //激活当前sheet
                var sel = document.body.createTextRange();
                sel.moveToElementText(curTbl);
                //把表格中的内容移到TextRange中
                sel.select();
                //全选TextRange中内容
                sel.execCommand("Copy");
                //复制TextRange中内容
                xlsheet.Paste();
                //粘贴到活动的EXCEL中
                oXL.Visible = true;
                //设置excel可见属性
    
                try {
                    var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
                } catch (e) {
                    print("Nested catch caught " + e);
                } finally {
                    oWB.SaveAs(fname);
    
                    oWB.Close(savechanges = false);
                    //xls.visible = false;
                    oXL.Quit();
                    oXL = null;
                    //结束excel进程,退出完成
                    //window.setInterval("Cleanup();",1);
                    idTmr = window.setInterval("Cleanup();", 1);
    
                }
    
            }
            else {
                tableToExcel(tableid)
            }
        }
        function Cleanup() {
            window.clearInterval(idTmr);
            CollectGarbage();
        }
        var tableToExcel = (function () {
            var uri = 'data:application/vnd.ms-excel;base64,',
            template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
              base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
              format = function (s, c) {
                  return s.replace(/{(w+)}/g,
                  function (m, p) { return c[p]; })
              }
            return function (table, name) {
    
    
                if (!table.nodeType) table = document.getElementById(table)
                //$('table>th:last').hide();
                //$('table>td:last').hide();
                var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
                window.location.href = uri + base64(format(template, ctx))
                parent.$("#ta").load(window.location.href + " #ta");
                parent.subWindow_add.Close();
            }
           
        })()
     

    如果导出出现乱码问题:

    解决方案:

    添加

    <meta name="viewport" content="width=device-width" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">

    导出的Excel:

    这里使用的数据都是在数据库中读取,如果实现可以自己修改Html,添加数据,自行测试。

    源码一并在下一章节!!!!

    不要让过去的自己,绑架现在的自己。不要让现在的自己,讨厌未来的自己。不要让未来的你,后悔现在的自己。
  • 相关阅读:
    vs2017 项目调试浏览器网页闪退Bug
    “WebPageBase”在未引用的程序集中定义。必须添加对程序集“System.Web.WebPages, Version=1.0.0.0,Culture=neutral....."的引用
    SQL Server判断日期是否为周六 周日
    获取各国的日期时间
    .net Api项目初步搭建并移除XML格式
    鼠标滚轮事件
    js中if表达式判断规则
    原生轮播图
    C# uri
    SqlServer 备份还原教程
  • 原文地址:https://www.cnblogs.com/wxylovejx/p/8398150.html
Copyright © 2020-2023  润新知