精华内容
下载资源
问答
  • 一、JSP文件 . . toolbar ="#toolbar" pagination ="true" pageList ="[5,10,15]" pageSize ="15" >  .  Name ...  tr > toolbar” > . exportExcel()” > Excel

    一、JSP 文件

    < div id="content" >

       <table id="dg" title="Menu Hits" class="easyui-datagrid" style="height:600px" url="${ctx}/json/getName.action"

           toolbar ="#toolbar" pagination ="true" pageList ="[5,10,15]" pageSize ="15" > 

    < thead>

        <tr> <th field ="name" width="100">Name</th >  ... </tr>

    </thead >

    <div id=”toolbar”>

        <a href=”class=”easyui-linkbutton” iconCls=”icon-save” plain=”true” onClick=”exportExcel()”> Excel </a>

    </div> 

    <script type=”text/javascript”> 

        function exportExcel(){

           var date=$(“#date”).datebox(“getValue”);

           var text=$(“#txtId”).val();

           location.href = “exportExcel.action?date=”+date+”&text=”+text;

    </script>

    </div>


    二、struts 文件

    <action name=”exportExcel” class=”exportAction” method=”exportExcel”>

      <result name=”success” type=”stream” >

        <param name=”contentType”>application/vnd.ms-excel</param>

        <param name=”inputName”> excelStream</param>

        <param name=”contentDispostion”>attachment;filename=”$(fileName).xls”</param>

        <param name=”bufferSize”>1024</param>

     </result > 

    </action> 


    三、java 文件

      public String exportExcel() {

        searchInput = new SysName();        // SysName 是一个 Model 对应数据库文件

        searchInput.setName(name);           // JSP 中传送的 parameter

        List name= nameService.search(searchInput, date);     // 读取数据库

        HSSFWorkbook workbook = getWorkbook(name, date);

     

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        workbook.write(baos);

        baos.flush();

        byte[] aa = baos.toByteArray();

        excelStream = new ByteArrayInputStream(aa, 0, aa.length);

        baos.close();

        return SUCCESS;

    }

    1. jsp 文件中通过 *.action 传递参数,java 文件中无法获取的问题 (原因:对应的 ExportAction 类中没有设置 get、set 方法。)


    2. getWorkbook()  -  生成EXCEL表

        HSSFWorkbook workbook = new HSSFWorkbook();

        HSSFSheet sheet1 = workbook.createSheet("Total"); //包含两个sheet页

        HSSFSheet sheet2 = workbook.createSheet("Details");

        HSSFRow row = sheet1.createRow(0);

        HSSFCell cell = row.createCell(i);

    展开全文
  • JQGrid导出Excel文件

    2017-01-09 16:22:00
    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 ...Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页、搜索、格式化、自定义按钮 Web jquery表格组件 JQGrid 的使用 - 6.准备工作 & ...

    系列索引

    Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引

    Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数、ColModel API、事件及方法

    Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页、搜索、格式化、自定义按钮

    Web jquery表格组件 JQGrid 的使用 - 6.准备工作 & Hello JQGrid

    Web jquery表格组件 JQGrid 的使用 - 7.查询数据、编辑数据、删除数据

    Web jquery表格组件 JQGrid 的使用 - 8.Pager、新增数据、查询、刷新、查看数据

    Web jquery表格组件 JQGrid 的使用 - 全部代码

    Web jquery表格组件 JQGrid 的使用 - 11.问题研究

     

    JQGrid导出Excel文件

     

     

     

    JQGrid导出Excel代码及引用库下载:https://www.codeproject.com/Tips/784342/Export-Data-from-jqGrid-into-a-real-Excel-File?msg=5092227#xx5092227xx

     

    来自codeproject,简单介绍下

     

    <script src="../Scripts/jqGridExportToExcel.js"></script>
    
    function exportExcel() { <%--导出Excel--%>
                ExportJQGridDataToExcel('#grid-table', 'c.xlsx');
            }
    

      

    前端页面引用jqGridExportToExcel.js,放置按钮调用exportExcel()函数即可

    • #grid-table为JQGrid的名称
    • 'c.xlsx'为导出的excel文件名称
     

    注意:

     

    此插件的限制:

    • loadonce: true,  必须设为true。
    • datatype: "json", 测试必须设为json,设为local就不行,其他数据格式未使用
    • 否则导出excel只有列头
    • 中文命名可能部分浏览器或系统是乱码

    请按需使用吧

     

    需要引用Lib文件夹下的DocumentFormat.OpenXml.dll,WindowsBase.dll这2个dll

    ExportGridToExcel.ashx的放置位置在jqGridExportToExcel.js的79行进行指定,放完修改为相对路径即可。

    ExportGridToExcel.ashx.cs文件的位置不限

     

    转载于:https://www.cnblogs.com/jhlong/p/6265677.html

    展开全文
  • 这是基于EntityFrameWork的.NET Web项目,View层使用JQuery借助 Formdata和Ajax实现Excel导入和导出功能 文件导入 View层: <input id="importFile" name="excelFile" type="file" value="选择要导入的文件"&...

    这是基于EntityFrameWork的.NET Web项目,View层使用JQuery借助 Formdata和Ajax实现Excel导入和导出功能

    文件导入

    View层:

    <input id="importFile" name="excelFile" type="file" value="选择要导入的文件">    //选择文件按钮

     <input type="button" id="saveExcelData" value="导入银行流水" />                       //触发文件导入功能的按钮

    这里借用Formdata传递file对象,实际上传递的是一个二进制文件

     $("#saveExcelData").click(function () {
                var formData = new FormData();
                var name = $("#importFile").val();
                console.log($("#importFile")[0].files[0])
                formData.append("file", $("#importFile")[0].files[0]);
                formData.append("name", name); //可以使用formData.append()传递多个参数
                console.log(formData);
                if (isNull(name)) {
                    alert("未选择导入文件!");
                    return;
                }
                //var xhr = new XMLHttpRequest();
                //xhr.open("post","/计提费用表/UploadExcel");
                //xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                //xhr.send(formData);
                $.ajax({
                    url: "/计提费用表/UploadExcel",
                    datatype: "json",
                    enctype: "multipart/form-data",
                    data: formData,
                    type: "post",
                    // 告诉jQuery不要去处理发送的数据
                    processData: false,
                    // 告诉jQuery不要去设置Content-Type请求头
                    contentType: false,
                    success: function (result) {
                            alert(result);
                            location.href = document.URL;
                    }
                });
    
    
            });

    控制器接口:

    //Excel上传
    public string UploadExcel()
    {
        var tran = db.Database.BeginTransaction();
        try
        {
            Stream uploadStream = null;
            //获取前台传递的File
            HttpPostedFileBase postFileBase = Request.Files["file"];
    
            uploadStream = postFileBase.InputStream;
    
            //设置上传文件名称默认为 银行流水+时间戳
            string fileName = string.Format("银行流水-{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), Path.GetExtension(postFileBase.FileName));
            //获取文件类型
            var dd = Path.GetExtension(postFileBase.FileName);
            //获取项目本地存储路径
            string baseUrl = Server.MapPath("~");
            //设置文件存储地址(此项目的Upload文件夹下)
            string uploadPath = baseUrl + @"Upload\";
            //判断此文件夹是否存在,没有则新建该文件夹
            if (!Directory.Exists(uploadPath)) Directory.CreateDirectory(uploadPath);
            //获取文件绝对路径  路径+文件名
            var filename = Path.Combine(uploadPath, fileName);
            //如果已经存在该文件,删除
            if (System.IO.File.Exists(filename))
            {
                System.IO.File.Delete(filename);
            }
            //在本地创建该文件
            using (FileStream fs1 = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite))
            {
                int bufferLen = 10240;
                byte[] buffer = new byte[bufferLen];
                int contentLen = 0;
    
                while ((contentLen = uploadStream.Read(buffer, 0, bufferLen)) != 0)
                {
                    fs1.Write(buffer, 0, bufferLen);
                    fs1.Flush();
                }
            }
    
            //把Excel文件写入到DataTable中
            DataTable dt = ExcelToDataTable(filename, true);
            var _rows = dt.AsEnumerable().AsQueryable();
            //然后后面操作_rows写库什么的就不写了,毕竟每个人的数据都不一样
            if (_rows.Count() == 0)
            {
                return "文件内容为空!";
            }
            DateTime lastData;
            DateTime firstData;       
            //获取文件第一条数据和最后一条数据的交易日期,判断一共上传了几个月的流水
    
            firstData = Convert.ToDateTime(_rows.FirstOrDefault()[0]);
            lastData = Convert.ToDateTime(_rows.ToList()[_rows.Count() - 1][0]);
            //第一个日期的第一天
            DateTime firstDayOfminMonth = new DateTime(firstData.Year, firstData.Month, 1);
            //第一个日期的最后一天
            DateTime lastDayOfminMonth = firstDayOfminMonth.AddMonths(1).AddDays(-1);
            //判断两个日期相差几个月
            int months = (lastData.Year - firstData.Year) * 12 + (lastData.Month - firstData.Month);
           
            db.SaveChanges();
            tran.Commit();
            db.Dispose();
            return "导入成功!";
        }
        catch (Exception ex)
        {
            tran.Rollback();
            return ex.Message + "请联系开发人员!";
        }
    }

     

    这里有一个Excel转成DateTable对象的方法

    这里会安装一些Nuget包,按照提示安装就好了,但是安装完 之后可能会遇到这个错误

    这是因为 ICSharpCode.SharpZipLib 和 NPOI.OpenXml4Net 版本冲突,两者最好升级到最新版本冲突就会消失了

    /// <summary>  
            /// 将excel导入到datatable  
            /// </summary>  
            /// <param name="filePath">excel路径</param>  
            /// <param name="isColumnName">第一行是否是列名</param>  
            /// <returns>返回datatable</returns>  
            public static DataTable ExcelToDataTable(string filePath, bool isColumnName)
            {
                DataTable dataTable = null;
                FileStream fs = null;
                DataColumn column = null;
                DataRow dataRow = null;
                IWorkbook workbook = null;
                ISheet sheet = null;
                IRow row = null;
                ICell cell = null;
                int startRow = 0;
                try
                {
                    using (fs = System.IO.File.OpenRead(filePath))
                    {
                        // 2007版本  
                        if (filePath.IndexOf(".xlsx") > 0)
                            workbook = new XSSFWorkbook(fs);
                        // 2003版本  
                        else if (filePath.IndexOf(".xls") > 0)
                            workbook = new HSSFWorkbook(fs);
    
                        if (workbook != null)
                        {
                            //读取第一个sheet,当然也可以循环读取每个sheet  
                            sheet = workbook.GetSheetAt(0);
                            dataTable = new DataTable();
                            if (sheet != null)
                            {
                                int rowCount = sheet.LastRowNum;//总行数  
                                if (rowCount > 0)
                                {
                                    IRow firstRow = sheet.GetRow(0);//第一行  
                                    int cellCount = firstRow.LastCellNum;//列数  
    
                                    //构建datatable的列  
                                    if (isColumnName)
                                    {
                                        startRow = 1;//如果第一行是列名,则从第二行开始读取  
                                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                        {
                                            //获取各个列内的值
                                            cell = firstRow.GetCell(i);
                                            if (cell != null)
                                            {
                                                if (cell.StringCellValue != null)
                                                {
                                                    column = new DataColumn(cell.StringCellValue);
                                                    dataTable.Columns.Add(column);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                        {
                                            column = new DataColumn("column" + (i + 1));
                                            dataTable.Columns.Add(column);
                                        }
                                    }
    
                                    //填充行  
                                    for (int i = startRow; i <= rowCount; ++i)
                                    {
                                        row = sheet.GetRow(i);
                                        if (row == null) continue;
    
                                        dataRow = dataTable.NewRow();
                                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                                        {
                                            cell = row.GetCell(j);
                                            if (cell == null || cell.CellType.ToString() == "Blank")
                                            {
                                                dataRow[j] = "";
                                            }
                                            else
                                            {
                                                //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)  
                                                switch (cell.CellType)
                                                {
                                                    case CellType.Blank:
                                                        dataRow[j] = "";
                                                        break;
                                                    case CellType.Numeric:
                                                        short format = cell.CellStyle.DataFormat;
                                                        //对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理  
                                                        if (format == 14 || format == 31 || format == 57 || format == 58)
                                                            dataRow[j] = cell.DateCellValue.ToString("yyyy-MM-dd");
                                                        else
                                                            dataRow[j] = cell.NumericCellValue;
                                                        break;
                                                    case CellType.String:
                                                        dataRow[j] = cell.StringCellValue;
                                                        break;
                                                }
                                            }
                                        }
                                        dataTable.Rows.Add(dataRow);
                                    }
                                }
                            }
                        }
                    }
                    return dataTable;
                }
                catch (Exception e)
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                    throw e;
                }
            }

     

    导出Excel

    view:

     <input type="button" id="btnExport" value="导出计提费用核算表" />

      $("#btnExport").click(function () {
                $.ajax({
                    url: "/计提费用表/导出计提费用核算表",
                    type: "get",
                    data: { "productId": $("#productId").val(), "sysDate1": $("#sysDate1").val(), "sysDate2": $("#sysDate2").val() },
                    datatype: "json",
                    success: function (data) {
                        if (data) {
                            if (data.length > 100)
                                location.href = "/Account/AuthorizeFail";
                            else
                                location.href = "../../Excels/Common/" + data;
                        }
                        else {
                            alert("没有查询到任何数据.");
                        }
                    }
                });
            });

     

    接口:

      //Excel导出
            public string 导出计提费用核算表(string productId, string sysDate1, string sysDate2)
            {
                DateTime dt1;
                DateTime dt2;
                // var data = new 计提费用公共类().获取计提费用核算数据集1(productId, account, sysDate1, sysDate2, false).OrderBy(c => c.流水变动日期).ToList();
                var data = db.计提费用核算表.OrderBy(x => x.产品名称).ThenBy(x => x.流水变动日期).ThenBy(x => x.计提起始日).ThenBy(x => x.计提截止日).AsEnumerable();
                if (!string.IsNullOrEmpty(productId))
                {
                    data = data.Where(x => x.产品名称 == productId).OrderBy(x => x.产品名称).ThenBy(x => x.流水变动日期).ThenBy(x => x.计提起始日).ThenBy(x => x.计提截止日).AsEnumerable();
                }
                if (!string.IsNullOrEmpty(sysDate1))
                {
                    DateTime.TryParse(sysDate1, out dt1);
                    data = data.Where(x => x.流水变动日期 >= dt1).OrderBy(x => x.产品名称).ThenBy(x => x.流水变动日期).ThenBy(x => x.计提起始日).ThenBy(x => x.计提截止日).AsEnumerable();
                }
                if (!string.IsNullOrEmpty(sysDate2))
                {
                    DateTime.TryParse(sysDate2, out dt2);
                    data = data.Where(x => x.流水变动日期 <= dt2).OrderBy(x => x.产品名称).ThenBy(x => x.流水变动日期).ThenBy(x => x.计提起始日).ThenBy(x => x.计提截止日).AsEnumerable();
                }
                if (data.Count() == 0)
                    return "没有查询到相关数据";
    
                //导出文件的名称
                string FileName = "计提费用核算表.xls";
                //获取要输出的列数
                PropertyInfo[] propertys = data.ToList()[0].GetType().GetProperties();
                IWorkbook wb = new HSSFWorkbook();
                //设置不同的列的格式(日期,金额,数字等)
                ICellStyle ContentStyle = WriteExcel.Getcellstyle(wb, stylexls.默认, true);
                ICellStyle BoldStyle = WriteExcel.Getcellstyle(wb, stylexls.加粗居中, true);
                ICellStyle MoneyStyle = WriteExcel.Getcellstyle(wb, true, false, 10, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, stylexls.数字);
                ICellStyle BoldMoneyStyle = WriteExcel.Getcellstyle(wb, true, true, 10, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, stylexls.数字);
                ICellStyle StrStyle = WriteExcel.Getcellstyle(wb, true, false, 10, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin);
                ICellStyle NonBoldStyle = WriteExcel.Getcellstyle(wb, false, true, 10, HorizontalAlignment.Right, VerticalAlignment.Center, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None);
                ICellStyle TitleStyle = WriteExcel.Getcellstyle(wb, false, false, 24, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.None, BorderStyle.None, BorderStyle.None, BorderStyle.None);
                ICellStyle colorMoneyStyle = WriteExcel.Getcellstyle(wb, true, false, 10, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, stylexls.数字);
                //为单元格设置颜色
                colorMoneyStyle.FillPattern = FillPattern.SolidForeground;
                colorMoneyStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
                colorMoneyStyle.FillBackgroundColor= NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
                ICellStyle colorStrStyle = WriteExcel.Getcellstyle(wb, true, false, 10, HorizontalAlignment.Center, VerticalAlignment.Center, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin, BorderStyle.Thin);
                colorStrStyle.FillPattern = FillPattern.SolidForeground;
                colorStrStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
                colorStrStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index;
    
                int rowindex = 0;
                int ColumnLength = propertys.Count();
                //sheet页名称
                string Sheet = "计提费用核算表";
                ISheet sh = wb.CreatePrintSetupSheet(Sheet);
                IRow row = sh.CreateRow(rowindex);
                ICell icelltop = row.CreateCell(0);
    
                //设置标题
                sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(rowindex, rowindex, 0, ColumnLength - 4));
                row.Height = 26 * 26;
                WriteExcel.WriteCell(row, 0, TitleStyle, Sheet);
                rowindex++;
    
                //设置表头列明
                row = sh.CreateRow(rowindex);
                row.Height = 25 * 20;
                int k = 0;
                foreach (PropertyInfo pi in propertys)
                {
                    if (pi.Name == "id"|| pi.Name == "申购或赎回" || pi.Name == "isMaintain")
                    {
                        continue;
                    }
                    icelltop = row.CreateCell(k);
                    icelltop.CellStyle = WriteExcel.Getcellstyle(wb, stylexls.加粗居中, true);
                    icelltop.CellStyle.VerticalAlignment = VerticalAlignment.Center;
                    icelltop.SetCellValue(pi.Name);
                    sh.SetColumnWidth(k, 25 * 206);
                    k++;
                }
                rowindex++;
    
                var loopDataTime = data.OrderBy(x => x.流水变动日期);
                //查询结果的流水起始变动日期
                DateTime minDateTime = loopDataTime.FirstOrDefault().流水变动日期;
                //当月第一天
                DateTime firstDayOfminMonth = new DateTime(minDateTime.Year, minDateTime.Month, 1);
                //当月最后一天
                DateTime lastDayOfminMonth = firstDayOfminMonth.AddMonths(1).AddDays(-1);
                //查询结果的流水变动结束的日期
                DateTime maxDateTime = loopDataTime.ToList()[data.Count() - 1].流水变动日期;
                //两个日期相差几个月,就生成sheet表里几段 数据集
                int months = (maxDateTime.Year - minDateTime.Year) * 12 + (maxDateTime.Month - minDateTime.Month);
    
                //用于判断是否应该加入统计行
                int newRowIndex = 2;
                //用于判断应该写入Excel的第几行
                int addIndex = 2;
                int newDataCount = 0;
                //第几月
                string thisMonth;
                for (int i = 0; i <= months; i++)
                {
                    //当前月第一天
                    DateTime thisMonthFirstDay = firstDayOfminMonth.AddMonths(i);
                    thisMonth = thisMonthFirstDay.Month.ToString() + "月合计";
                    //当前月第最后一天
                    DateTime thisMonthLastDay = lastDayOfminMonth.AddMonths(i);
                    //当月所有产品数据
                    var newData = data.Where(x => x.流水变动日期 >= thisMonthFirstDay && x.流水变动日期 <= thisMonthLastDay).OrderBy(x => x.产品名称).OrderBy(x => x.流水变动日期).AsEnumerable();
                    if (newData.Count() > 0)
                    {
                        //同一月份有几个产品 就生成几个数据集
                        var 产品名称集合 = newData.OrderBy(x => x.产品名称).Select(x => x.产品名称).Distinct().AsEnumerable();
                        foreach (var 产品名称 in 产品名称集合)
                        {
                            var 单个产品 = newData.Where(x => x.产品名称 == 产品名称).OrderBy(x => x.流水变动日期).AsEnumerable();
                            newDataCount = newRowIndex + 单个产品.Count();
                            int 规模变动合计 = 0;
                            int 计提天数合计 = 0;
                            decimal 管理费合计 = 0;
                            decimal 托管费合计 = 0;
                            decimal 行管费合计 = 0;
                            decimal 计提费用合计 = 0;
                            string 规模变动;
                            foreach (var 计提记录 in 单个产品)
                            {
                                int columnindex = 0;
                                row = sh.CreateRow(addIndex);
                                row.Height = 25 * 20;
                                规模变动 = 计提记录.申购或赎回 == "赎回" ? "-" + 计提记录.规模变动.ToString() : 计提记录.规模变动.ToString();
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.流水变动日期.ToString("yyyy-MM-dd"));
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.产品名称);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 规模变动);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.计提起始日.ToString("yyyy-MM-dd"));
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.计提截止日.ToString("yyyy-MM-dd"));
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.计提天数);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.计提规模);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.管理费率);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.托管费率);
                                WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提记录.行管费率);
                                WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 计提记录.管理费);
                                WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 计提记录.托管费);
                                WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 计提记录.行管费);
                                WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 计提记录.计提费用合计);
                                规模变动合计 = 计提记录.申购或赎回 == "申购" ? 规模变动合计 + 计提记录.规模变动 : 规模变动合计 - 计提记录.规模变动;
                                计提天数合计 = 计提天数合计 + 计提记录.计提天数;
                                管理费合计 = 管理费合计 + 计提记录.管理费;
                                托管费合计 = 托管费合计 + 计提记录.托管费;
                                行管费合计 = 行管费合计 + 计提记录.行管费;
                                计提费用合计 = 管理费合计 + 托管费合计 + 行管费合计;
                                newRowIndex++;
                                addIndex++;
                                //生成最后一行统计行
                                if (newRowIndex == newDataCount)
                                {
                                    columnindex = 0;
                                    row = sh.CreateRow(addIndex);
                                    row.Height = 25 * 20;
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, thisMonth);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, 规模变动合计);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, 计提天数合计);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, StrStyle, null);
                                    WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 管理费合计);
                                    WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 托管费合计);
                                    WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 行管费合计);
                                    WriteExcel.WriteCell(row, columnindex++, MoneyStyle, 计提费用合计);
                                }
                            }
                            //空格2行生成下个月份的数据集
                            addIndex++;
                            addIndex++;
                            addIndex++;
                            addIndex++;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
    
                string excelpath = Server.MapPath(@"~/Excels/Common/");
                if (!Directory.Exists(excelpath))
                    Directory.CreateDirectory(excelpath);
                using (FileStream fs = System.IO.File.OpenWrite(excelpath + FileName))
                {
                    wb.Write(fs);   //向打开的这个xls文件中写入mySheet表并保存。
                }
    
                Logger.WriteLogs(User.Identity.Name, "计提费用核算表导出", FundClear.Models.操作类型.导出);
                return "../../Excels/Common/" + FileName;
            }

    这里写了一个WriteExcell方法,因为数据类型不一样,对这个方法写了一些重载方法,,另外还有一些设置字体和单元格样式的方法

            /// <summary>
            /// 创建并填写单元格
            /// </summary>
            /// <param name="row">单元行</param>
            /// <param name="ColumnIndex">单元格索引值</param>
            /// <param name="CellStyle">单元格样式</param>
            /// <param name="Value">值</param>
            public static void WriteCell(IRow row, int ColumnIndex, ICellStyle CellStyle, string Value)
            {
                ICell icelltop = row.CreateCell(ColumnIndex);
                icelltop.CellStyle = CellStyle;
                icelltop.SetCellValue(Value);
            }
    
    //根据内容不同给单元格设置不同的样式
        public enum stylexls
        {
            头,
            表头,
            加粗居中,
            副标题,
            url,
            时间,
            数字,
            钱,
            百分比,
            中文大写,
            科学计数法,
            默认
        }
    
      public enum BorderStyle : short
        {
            None = 0,
            Thin = 1,
            Medium = 2,
            Dashed = 3,
            Dotted = 4,
            Thick = 5,
            Double = 6,
            Hair = 7,
            MediumDashed = 8,
            DashDot = 9,
            MediumDashDot = 10,
            DashDotDot = 11,
            MediumDashDotDot = 12,
            SlantedDashDot = 13
        }
    
    
            #region 定义单元格常用到样式
    //加粗居中
            public static ICellStyle Getcellstyle(IWorkbook wb, stylexls str, bool IsBold, string fontName = "仿宋_GB2312")
            {
                ICellStyle cellStyle = wb.CreateCellStyle();
                //定义几种字体  
                //也可以一种字体,写一些公共属性,然后在下面需要时加特殊的  
                IFont fontTitle = wb.CreateFont();
                fontTitle.FontHeightInPoints = 24;
                fontTitle.Boldweight = 1;
                fontTitle.FontName = fontName;
    
                IFont fontSmallTitle = wb.CreateFont();
                fontSmallTitle.Boldweight = (short)FontBoldWeight.Bold;
                fontSmallTitle.FontHeightInPoints = 10;
                fontSmallTitle.FontName = fontName;
    
                IFont font = wb.CreateFont();
                font.FontHeightInPoints = 10;
                font.FontName = fontName;
                //font.Underline = 1;下划线  
    
                IFont fontcolorblue = wb.CreateFont();
                fontcolorblue.Color = HSSFColor.OliveGreen.Blue.Index;
                fontcolorblue.IsItalic = true;//下划线  
                fontcolorblue.FontName = fontName;
    
                //边框颜色  
                //cellStyle.BottomBorderColor = HSSFColor.OliveGreen.Blue.Index;
                //cellStyle.TopBorderColor = HSSFColor.OliveGreen.Blue.Index;  
                //cellStyle.FillForegroundColor = HSSFColor.White.Index;
                //cellStyle.FillBackgroundColor = HSSFColor.Blue.Index;
    
                if (IsBold)
                {
                    //边框厚度
                    cellStyle.BorderBottom = BorderStyle.Thin;
                    cellStyle.BorderLeft = BorderStyle.Thin;
                    cellStyle.BorderRight = BorderStyle.Thin;
                    cellStyle.BorderTop = BorderStyle.Thin;
                }
    
                //水平对齐  
                cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
    
                //垂直对齐  
                cellStyle.VerticalAlignment = VerticalAlignment.Center;
    
                //自动换行  
                cellStyle.WrapText = true;
    
                //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对  
                cellStyle.Indention = 0;
    
                //上面基本都是设共公的设置  
                //下面列出了常用的字段类型  
                switch (str)
                {
                    case stylexls.头:
                        cellStyle.Alignment = HorizontalAlignment.Center;
                        cellStyle.SetFont(fontTitle);
                        break;
                    case stylexls.表头:
                        cellStyle.Alignment = HorizontalAlignment.Center;
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.加粗居中:
                        cellStyle.Alignment = HorizontalAlignment.Center;
                        cellStyle.SetFont(fontSmallTitle);
                        break;
                    case stylexls.副标题:
                        cellStyle.SetFont(fontSmallTitle);
                        break;
                    case stylexls.时间:
                        IDataFormat datastyle = wb.CreateDataFormat();
                        cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.数字:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.钱:
                        IDataFormat format = wb.CreateDataFormat();
                        cellStyle.DataFormat = format.GetFormat("¥#,##0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.url:
                        fontcolorblue.Underline = FontUnderlineType.Single;
                        cellStyle.SetFont(fontcolorblue);
                        break;
                    case stylexls.百分比:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.中文大写:
                        IDataFormat format1 = wb.CreateDataFormat();
                        cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.科学计数法:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.默认:
                        cellStyle.SetFont(font);
                        break;
                }
                return cellStyle;
            }
    
    //普通内容
            public static ICellStyle Getcellstyle(IWorkbook wb, bool IsBold, bool IsStrong, int FontSize, HorizontalAlignment HAlignment, VerticalAlignment VAlignment, string fontName = "仿宋_GB2312")
            {
                ICellStyle cellStyle = wb.CreateCellStyle();
                IFont font = wb.CreateFont();
                font.FontHeightInPoints = (short)FontSize;
                font.FontName = fontName;
                if (IsStrong)
                {
                    font.Boldweight = (short)FontBoldWeight.Bold;
                }
                if (IsBold)
                {
                    //边框厚度
                    cellStyle.BorderBottom = BorderStyle.Thin;
                    cellStyle.BorderLeft = BorderStyle.Thin;
                    cellStyle.BorderRight = BorderStyle.Thin;
                    cellStyle.BorderTop = BorderStyle.Thin;
                }
                //水平对齐  
                cellStyle.Alignment = HAlignment;
                //垂直对齐  
                cellStyle.VerticalAlignment = VAlignment;
                //自动换行  
                cellStyle.WrapText = true;
                //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对  
                cellStyle.Indention = 0;
                //上面基本都是设共公的设置  
                //下面列出了常用的字段类型  
                cellStyle.SetFont(font);
                return cellStyle;
            }
    
            public static ICellStyle Getcellstyle(IWorkbook wb, bool IsBold, bool IsStrong, int FontSize, HorizontalAlignment HAlignment, VerticalAlignment VAlignment, BorderStyle BottomStyle, BorderStyle LeftStyle, BorderStyle RightStyle, BorderStyle TopStyle)
            {
                return Getcellstyle(wb, IsBold, IsStrong, FontSize, HAlignment, VAlignment, BottomStyle, LeftStyle, RightStyle, TopStyle, stylexls.默认);
            }
    
            public static ICellStyle Getcellstyle(IWorkbook wb, bool IsBold, bool IsStrong, int FontSize, HorizontalAlignment HAlignment, VerticalAlignment VAlignment, BorderStyle BottomStyle, BorderStyle LeftStyle, BorderStyle RightStyle, BorderStyle TopStyle, stylexls DataType, string fontName = "仿宋_GB2312")
            {
                ICellStyle cellStyle = wb.CreateCellStyle();
                IFont font = wb.CreateFont();
                font.FontHeightInPoints = (short)FontSize;
                font.FontName = fontName;
                if (IsStrong)
                {
                    font.Boldweight = (short)FontBoldWeight.Bold;
                }
                if (IsBold)
                {
                    //边框厚度
                    cellStyle.BorderBottom = BottomStyle;
                    cellStyle.BorderLeft = LeftStyle;
                    cellStyle.BorderRight = RightStyle;
                    cellStyle.BorderTop = TopStyle;
                }
                switch (DataType)
                {
                    case stylexls.时间:
                        IDataFormat datastyle = wb.CreateDataFormat();
                        cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.数字:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.钱:
                        IDataFormat format = wb.CreateDataFormat();
                        cellStyle.DataFormat = format.GetFormat("¥#,##0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.百分比:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.中文大写:
                        IDataFormat format1 = wb.CreateDataFormat();
                        cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.科学计数法:
                        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");
                        cellStyle.SetFont(font);
                        break;
                    case stylexls.默认:
                        cellStyle.SetFont(font);
                        break;
                }
                //水平对齐  
                cellStyle.Alignment = HAlignment;
                //垂直对齐  
                cellStyle.VerticalAlignment = VAlignment;
                //自动换行  
                cellStyle.WrapText = true;
                //缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对  
                cellStyle.Indention = 0;
                return cellStyle;
            }
            #endregion
    
    

    对于从项目导出现有Excel,即模板下载功能 可以使用超链接的形式下载。

     

    <a href="../Excels/计提费用银行流水导入模板.xlsx" style="color: #ff0000; text-decoration: none;">下载导入模板</a>

    展开全文
  • 此方法可以在前端直接点击按钮,直接下载excel文件,数据在java后台自己实现 前端代码 var url = '${ctx}/_data/web/msg/download?memType=2&type=' + type; window.open(url, '_blank').location; java代码...

    此方法可以在前端直接点击按钮,直接下载excel文件,数据在java后台自己实现

    前端代码

    var url = '${ctx}/_data/web/msg/download?memType=2&type=' + type;
    window.open(url, '_blank').location;

    java代码

    action:

    @GetMapping("/download")
    public void download(@RequestParam(name= "type",required = true) int type,
        BasMember data,HttpServletResponse response) throws UnsupportedEncodingException{
    	//设置响应头和客户端保存文件名
    	response.setCharacterEncoding("utf-8");
    	//设置文件ContentType类型,这样设置,会自动判断下载文件类型?
    	response.setContentType("multipart/form-data");
    	//当设置了该响应头时,使用 response 输出流将会被当作附件提供给客户端下载,反之就是将流中的内容 
        输出到页面上,对于图片等文件可用于控制是要显示图片还是下载图片
    	response.setHeader("Content-Disposition", "attachment;fileName=" +         
        URLEncoder.encode("短信管理.xls", "utf-8"));
    	 //复制文件流到响应输出流
    	 try {
    	 service.download(response,type,data);
    	     response.getOutputStream().flush();
    	     response.getOutputStream().close();
    	 } catch (IOException e) {
    		throw new FileDownloadException(CommonError.WEB_FILE_DOWNLOAD_FAILURE,e,"短信管        
            理.xls");
    }
    }

    service是action注入的service

    serviceImpl实现类代码:

    @Override
    	public void download(HttpServletResponse response, int type, BasMember data) {
    		if (StringUtils.isNotEmpty(data.getMemType())) {
    			data.getQuery().addCondition(BasMember.Field.memType, data.getMemType());
    		}
    		data.getQuery().addOrderBy(false, BasMember.Field.created);
    		List<BasMember> list = dao.find(data);
            //将数据查出根据自己的需要拼接传到方法createFile中
    		createFile(list ,response,3);
    		
    	}
    
    //创建excel文件
    private void createFile(List<BasMember> list, HttpServletResponse response,int cols){
    		// 创建工作簿---->XSSF代表10版的Excel(HSSF是03版的Excel)
    		HSSFWorkbook wb = new HSSFWorkbook();
    		// 创建工作表
    		HSSFSheet sheet = wb.createSheet("短信管理");
    		
    		HSSFCellStyle style = wb.createCellStyle();
    		sheet.setDefaultColumnWidth(15);//设置列宽
    		style.setAlignment(HorizontalAlignment.CENTER); // 水平居中
    		style.setBorderBottom(BorderStyle.THIN); // 下边框
    		style.setBorderLeft(BorderStyle.THIN);// 左边框
    		style.setBorderTop(BorderStyle.THIN);// 上边框
    		style.setBorderRight(BorderStyle.THIN);// 右边框
    		style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
    		int rows = vos.size();
    		// 创建单元格
    		for (int i = 0; i < rows + 1; i++) {
    			HSSFRow row = sheet.createRow(i);
    			for (int j = 0; j < cols; j++) {
    				HSSFCell cell = row.createCell(j);
    				cell.setCellStyle(style);
    			}
    		}
    		//定义数据
    		for (int i = 0; i < rows + 1; i++) {
    			for (int j = 0; j < cols; j++) {
    				if (i == 0) {
    					switch (j) {
    					case 0:
    						sheet.getRow(i).getCell(j).setCellValue("单位");
    						break;
    					case 1:
    						sheet.getRow(i).getCell(j).setCellValue("姓名");
    						break;
    					case 2:
    						sheet.getRow(i).getCell(j).setCellValue("手机");
    						break;
    					default:
    						break;
    					}
    					
    				} else {
    					switch (j) {
    					case 0:
    						sheet.getRow(i).getCell(j).setCellValue(list.get(i-1).getCompanyName());
    						break;
    					case 1:
    						sheet.getRow(i).getCell(j).setCellValue(list.get(i-1).getName());
    						break;
    					case 2:
    						sheet.getRow(i).getCell(j).setCellValue(list.get(i-1).getMobile());
    						break;
    					default:
    						break;
    					}
    				}
    			}
    
    		}
    		try {
    			wb.write(response.getOutputStream());
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}

    最后生成的样式:

    这个可以根据需要自己修改样式

    展开全文
  • 1、新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站、电压等级查询定值单。 2、定值单信息以表格形式展示,根据选择情况,生成三核对文件。 整体就是这样的一个需求,分sheet,合并单元格...
  • 在HTML页面中就一个按钮.////// Text="导出"> ///和 一个DataGrid /// ///aspx.cs 文件的代码是:////public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid DataGrid1;...
  • 需求:将web页面datatable导出成Excel表格,要求为CSV格式文件导出按钮点击事件如下:/*** 导出csv按钮点击事件* @param current* @returns*/function exportCsv(current){// 获取表格数据var data = JSON.stringify...
  • 1、数据库中建表 具体数据库文件附项目中。 2、利用Maven创建Web项目,配置ssm环境(最后附上项目下载地址) ... 项目目录结构如下: ...点击导出表格按钮,执行函数,请求后台: function exportEx...
  • 前言Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢?抓下载接口1.使用fiddler工具抓包,先找到导出按钮,点导出时候抓包2.抓到数据...
  • JS将Datatable表格数据导出为CSV文件

    千次阅读 2019-03-03 21:46:30
    需求:将web页面datatable导出成Excel表格,要求为CSV格式文件 导出按钮点击事件如下: /** * 导出csv按钮点击事件 * @param current * @returns */ function exportCsv(current){ // 获取表格数据 var data =...
  • 最近项目要用poi+webflow实现到处excel的功能,直接导出到服务器端以实现,先不想在服务器端保存临时文件,就是当用户点击导出按钮时弹出一个弹出保存框,类似于”目标另存为“ export_flow.xml文件如下 <!...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01007获取打开Excel文件时的默认路径 01008获取模板保存的默认路径 01009获取库文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度...
  • 点击导出按钮,提交请求,下载excel文件(超过500M),该文件没有预生成在后端, 直接以文件流的形式返回给前端。 解决方案 在Vue项目中常用的方式是通过axios配置请求,读取后端返回的文件流,常用代码如下: ...
  • 【批量导出图片】 将EXCEL中指定某列中的图片按显示图片大小导出到指定的文件夹中。 批 注 工 具 【插入样式批注】 提供50种花样的批注供选择,可随时更换,且美观大方。 【插入图片批注】 不仅提供多样的批注供...
  • 介绍了应用Java Web进行程序开发的各个方面的知识和技巧,主要包括Java Web编程基础、文件操作管理、图形图像与多媒体技术、窗体应用技术、JSP操作Word与Excel等。全书分6篇23章,共计600个实例和600个经验技巧。每...
  • 书名:《Java Web开发实战1200例(第II卷)》(清华大学出版社.卢瀚.王春斌) PDF格式扫描版,全书分为7篇23章,共960页。2011年6月出版。 注:原书只有前20章818页,本人添加了剩余章节重新编辑成完整版本,为了方便...
  • CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM...
  • visio教程PDF

    热门讨论 2010-05-17 23:56:22
    2.3.4 Visio on the Web和Help按钮 2.4 小结 第3章 熟悉Visio工程 3.1 起点 3.1.1 标难工具栏按钮 3.1.2 其他工具栏简介 3.2 第一张Visio绘图 3.3 小结 第二部分 创建工程 第4章 使用样板创建新...
  • 实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • 实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除...
  • C++范例大全(400)

    2013-06-29 21:23:07
    实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • 实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • VC++6.0示例程序光盘

    热门讨论 2012-03-18 13:40:03
    实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • VC++6.0示例程序光盘.part1

    热门讨论 2011-02-21 09:17:43
    实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • 实例126——重载打开文件对话框,添加删除按钮 实例127——使用查找替换对话框实现查找替换功能 实例128——在程序中使用属性表对话框 实例129——激活使用属性表对话框中的“应用”按钮 实例130——去除属性表...
  • PROJECT 2007宝典 9/9

    2012-04-01 19:13:00
     导入和导出项目信息。 内容提要 -------------------------------------------------------------------------------- Microsoft Project 2007是流行的基于网络的项目管理软件,在各类项目管理中发挥着巨大的作用...
  • 导出excel的记录支持所有excel+wps等表格文件版本,不依赖excel等软件。 可删除指定时间范围内的数据,支持自动清理早期数据,设置最大保存记录数。 支持报警短信转发,支持多个接收手机号码,可设定发送间隔,...
  • 19.10 创建Excel文件 19.11 JavaScript导出数据到Excel 19.12 JavaScript读取自身文件内的XML 19.13 将XML文件绑定到table 19.14 使用JavaScript加载XML文件 19.15 动态加载JavaScript文件 19.16 防止JavaScript文件...
  • 实例225 将GridView控件的数据导出Excel并进行格式化 355 实例226 将Excel中数据导入到Aceess并绑定GridView 356 实例227 将GridView中绑定的Access数据生成XML 358 实例228 嵌套购物车(可增减商品数并显示摘要...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

web导出按钮导出excel文件