zoukankan      html  css  js  c++  java
  • Excel导出

    <!DOCTYPE html>
    <html>
    <head>
        <title>ASP.NET版Memcached监控工具</title>
        <style type="text/css">
            ul
            {
                list-style: none;
            }
            li
            {
                width: 200px;
                height: 150px;
                float: left;
                margin-right: 10px;
                margin-bottom:10px;
            }
            li span
            {
                display: block;
                width: 200px;
            }
            li img
            {
                width: 200px;
                height: 100px;
            }
        </style>
        <script type="text/javascript">
    
            (function (bool) {
                function setInnerText(o, s) {
                    while (o.childNodes.length != 0) {
                        o.removeChild(o.childNodes[0]);
                    }
    
                    o.appendChild(document.createTextNode(s));
                }
    
                function getInnerText(o) {
                    var sRet = "";
    
                    for (var i = 0; i < o.childNodes.length; i++) {
                        if (o.childNodes[i].childNodes.length != 0) {
                            sRet += getInnerText(o.childNodes[i]);
                        }
    
                        if (o.childNodes[i].nodeValue) {
                            if (o.currentStyle.display == "block") {
                                sRet += o.childNodes[i].nodeValue + "
    ";
                            } else {
                                sRet += o.childNodes[i].nodeValue;
                            }
                        }
                    }
    
                    return sRet;
                }
    
                if (bool) {
                    HTMLElement.prototype.__defineGetter__("currentStyle", function () {
                        return this.ownerDocument.defaultView.getComputedStyle(this, null);
                    });
    
                    HTMLElement.prototype.__defineGetter__("innerText", function () {
                        return getInnerText(this);
                    })
    
                    HTMLElement.prototype.__defineSetter__("innerText", function (s) {
                        setInnerText(this, s);
                    })
                }
            })(/Firefox/.test(window.navigator.userAgent));
    </script>
    
        <script type="text/javascript">
            function innerText(node) {//返回的是数组类型
                var innerTextArr = [];
                var root = document.getElementById(node);
                var getChild = function (node) {
                    var childs = node.childNodes;
                    for (var i = 0; i < childs.length; i++)
                        if (childs[i].nodeType == 3)
                            innerTextArr.push(childs[i].nodeValue);
                        else if (childs[i].nodeType == 1) {
                            getChild(childs[i]);
                        }
                }
                getChild(root);
                return innerTextArr;
            }
            window.onload = function () {
                var _ul = document.getElementById('oUl');
                var _li = _ul.getElementsByTagName('li');
                var _total = 0;
                for (var i = 0, l = _li.length; i < l; i++) {
                    var _img = _li[i].getElementsByTagName('img')[0];
                    
                    _img.onclick = function () {
                        var _spans = this.parentNode.getElementsByTagName('span');
                        var _js = parseInt(_spans[0].innerText);
                        _spans[0].innerText = _js + 1;
                        var _cs = parseInt(_spans[1].innerText);
                        _spans[2].innerText = (_js + 1) * _cs;
                        _total += _cs;
                        document.getElementById('hj').value = _total;
                    }
    
                }
    
            };
            function dcExcel() {
                var doc = document;
                var _ul = doc.getElementById('oUl');
                var _li = _ul.getElementsByTagName('li');
                var _jsonstr = "";
                var _total = 0;
                for (var i = 0, l = _li.length; i < l; i++) {
                    var _img = _li[i].getElementsByTagName('img')[0];
                    _jsonstr += ",{";
                    _jsonstr += '"img":"' + _img.getAttribute("src") + '"';
                    
                    
                    
                        var _spans = _img.parentNode.getElementsByTagName('span');
                        var _js = parseInt(_spans[0].innerText);
                        //_spans[0].innerText = _js + 1;
                        _jsonstr += ',"num":"' + _js + '"';
    
                        var _cs = parseInt(_spans[1].innerText);
                        _jsonstr += ',"dj":"' + _cs + '"';
                        
                        //_spans[2].innerText = (_js + 1) * _cs;                    
                        _jsonstr += ',"hj":"' + (_js * _cs) + '"';
                        _total += _cs;
                        //doc.getElementById('hj').value = _total;
                        _jsonstr += "}";
    
                    }
                    //alert(_jsonstr);
                    document.getElementById("txt_excel").value = encodeURIComponent("[" + _jsonstr.substr(1) + "]");
                //document.getElementById("txt_excel").value = encodeURIComponent(document.getElementById("divDC").innerHTML);
            }
        </script>
    
    </head>
    <body>
    <form method="post" runat="server" action="dc.aspx">
    <textarea id="txt_excel" name="txt_excel" style="display:none;"></textarea>
        <input type="submit" value="Excel导出" onclick="dcExcel();" />
        </form>
        <div id="divDC">
        合计:<input type="text" id="hj" value="0" readonly="readonly" />
        <input type="button" value="清空" onclick="location.reload()" />
        <ul id="oUl">
            <li>
                <img src='newimage/1.jpg' alt='1' />
                <span>0</span> <span>3</span> <span></span></li>
            <li>
                <img src='newimage/1.jpg' alt='2' />
                <span>0</span> <span>5</span> <span></span></li>
            <li>
                <img src='newimage/1.jpg' alt='3' />
                <span>0</span> <span>6</span> <span></span></li>
            <li>
                <img src='newimage/1.jpg' alt='4' />
                <span>0</span> <span>9</span> <span></span></li>
            <li>
                <img src='newimage/1.jpg' alt='5' />
                <span>0</span> <span>7</span> <span></span></li>
            <li>
                <img src='newimage/1.jpg' alt='6' />
                <span>0</span> <span>2</span> <span></span></li>
        </ul>
        </div>
    </body>
    </html>
    dc.aspx

    using System;
    using System.Web;
    using System.Data;
    using System.IO;
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Reflection;
    using System.Diagnostics;
    using Newtonsoft.Json;
    
    
    public partial class dc : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string _productsInfo = Server.UrlDecode(Request.Form["txt_excel"]);
            JavaScriptArray javascript = (JavaScriptArray)JavaScriptConvert.DeserializeObject(_productsInfo);
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("img", typeof(System.String)));
            dt.Columns.Add(new DataColumn("num", typeof(System.String)));
            dt.Columns.Add(new DataColumn("dj", typeof(System.String)));
            dt.Columns.Add(new DataColumn("hj", typeof(System.String)));
            if (javascript.Count > 0)
            {
                DataRow dr;
                foreach (JavaScriptObject obj in javascript)
                {
                    dr = dt.NewRow();
                    dr["img"] = obj["img"].ToString();
                    dr["num"] = obj["num"].ToString();
                    dr["dj"] = obj["dj"].ToString();
                    dr["hj"] = obj["hj"].ToString();
                    dt.Rows.Add(dr);
                }
            }
            btntoexcel_Click(dt);
            //byte[] bytes = System.Text.Encoding.Default.GetBytes(str);
            
            //string fileName = strName;//客户端保存的文件名
            //string filePath = Server.MapPath(strPath);//路径 
            ////以字符流的形式下载文件
            //FileStream fs = new FileStream(filePath, FileMode.Open);
            //byte[] bytes = new byte[(int)fs.Length];
            //fs.Read(bytes, 0, bytes.Length);
            //fs.Close();
            /*
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开
            Response.AddHeader("Content-Disposition", "attachment;  filename=" + 
                HttpUtility.UrlEncode(DateTime.Now.ToShortTimeString() + ".txt", System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
            */
    
    
    
    
    
    
    
    
            /*
            NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
            NPOI.SS.UserModel.Sheet sheet = book.CreateSheet("order");
            
            NPOI.SS.UserModel.Row row = sheet.CreateRow(0);
            //订单表设置标题
            row.CreateCell(0).SetCellValue(str);
            
    
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            book.Write(ms);
            HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=Order_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls"));
            HttpContext.Current.Response.BinaryWrite(ms.ToArray());
            book = null;
            ms.Close();
            ms.Dispose();
            */
        }
    
        #region 导出
        private void btntoexcel_Click(System.Data.DataTable dt)
        {
            if (dt != null)
            {
                #region 操作excel
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                xlWorkBook = new Excel.Application().Workbooks.Add(Type.Missing);
                xlWorkBook.Application.Visible = false;
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
                //设置标题
                xlWorkSheet.Cells[1, 1] = "数量";
                xlWorkSheet.Cells[1, 2] = "单价";
                xlWorkSheet.Cells[1, 3] = "合计";
                xlWorkSheet.Cells[1, 4] = "图片";
                //设置宽度            
                ((Excel.Range)xlWorkSheet.Cells[1, 2]).ColumnWidth = 15;
                ((Excel.Range)xlWorkSheet.Cells[1, 4]).ColumnWidth = 50;//图片的宽度
    
                //设置字体
                xlWorkSheet.Cells.Font.Size = 12;
                xlWorkSheet.Cells.Rows.RowHeight = 100;
                #region 为excel赋值
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //为单元格赋值。
                    xlWorkSheet.Cells[i + 2, 1] = dt.Rows[i]["num"].ToString();
                    xlWorkSheet.Cells[i + 2, 2] = dt.Rows[i]["dj"].ToString();
                    xlWorkSheet.Cells[i + 2, 3] = dt.Rows[i]["hj"].ToString();
    
                    #region
                    //可以直接取图片的地址
                    string filename = Server.MapPath("~/" + dt.Rows[i]["img"].ToString());
                    //也可以用下面的方法把图片从数据库里取出来。
                    //byte[] filedata = (byte[])dtimg.Rows[j]["img"];
                    //System.IO.MemoryStream ms = new System.IO.MemoryStream(filedata);
                    //System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
                    //img.Save(filename);
                    #endregion
                    //int rangeindex = i+1;
                    //string rangename = "D" + rangeindex;
                    //Excel.Range range = xlWorkSheet.get_Range(rangename, Type.Missing);
                    //range.Select();
                    //Excel.Pictures pict = (Excel.Pictures)xlWorkSheet.Pictures(Type.Missing);
                    //pict.Insert(filename, Type.Missing);
    
                    //Left , Top , Width and Height.
                    xlWorkSheet.Shapes.AddPicture(filename, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue,
                        220, 100 + i * 100, 100, 100);
    
    
                }
                #endregion
                #region 保存excel文件
                string _sj = DateTime.Now.ToString("yyyyMMddHHmmss");
                string filePath = Server.MapPath("/") + _sj + "导出.xls";
                xlWorkBook.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                    Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                xlWorkBook.Application.Quit();
                xlWorkSheet = null;
                xlWorkBook = null;
                GC.Collect();
                System.GC.WaitForPendingFinalizers();
                #endregion
                #endregion
                KillProcessexcel("EXCEL");
    
                #region 导出到客户端
                /*
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.AppendHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("导出", System.Text.Encoding.UTF8) + ".xls");
                Response.ContentType = "Application/excel";
                Response.WriteFile(filePath);
                Response.End();
                */
                #endregion
    
                Response.ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(filePath, System.Text.Encoding.UTF8));
                //Response.BinaryWrite(bytes);
                Response.WriteFile(filePath);
                Response.Flush();
    
                File.Delete(filePath);
    
                Response.End();
            }
        }
        #endregion
        #region 杀死进程
        private void KillProcessexcel(string processName)
        { //获得进程对象,以用来操作
            System.Diagnostics.Process myproc = new System.Diagnostics.Process();
            //得到所有打开的进程
            try
            {
                //获得需要杀死的进程名
                foreach (Process thisproc in Process.GetProcessesByName(processName))
                { //立即杀死进程
                    thisproc.Kill();
                }
            }
            catch (Exception Exc)
            {
                throw new Exception("", Exc);
            }
        }
        #endregion
    }
  • 相关阅读:
    就是能打开网站的首页,但不能打开二级链接的解决办法
    .NET学习笔记:文件和注册表操作
    小猪今天生病了,要打针了
    Android基础教程——在TextView中显示Html 自定义标签,获取标签属性
    所谓周末,就是在家好好做饭、好好睡觉、好好玩游戏
    我开通了个人博客
    《和空姐一起的日子》中顾太太新买的电脑
    iPhone & iPad apps with special url shortcuts
    iPhone开发错误集
    瞧瞧包拯,狄仁杰,宋慈的团队
  • 原文地址:https://www.cnblogs.com/daixingqing/p/3497437.html
Copyright © 2011-2022 走看看