NPOI 写download Excel 功能

1.后台代码

        public Object DownloadToExcel(JObject searchCriteria, JObject validCriteria)
        {
            Dictionary<string, object> returnData = (Dictionary<string, object>)this.InitData(searchCriteria);
            Object dObject = this.InitData(searchCriteria);
            DataTable dt = ((DataSet)returnData["data"]).Tables[0];
            String template = AppDomain.CurrentDomain.BaseDirectory + System.Configuration.ConfigurationSettings.AppSettings["ReportsExcelPath"] + "Template\\test123.xlsx";
            IWorkbook iworkbook;
            using (FileStream file = new FileStream(template, FileMode.Open, FileAccess.Read))
            {
                iworkbook = new XSSFWorkbook(file);
                file.Close();
            }
            var parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(searchCriteria.ToString());
            ISheet sheet1 = iworkbook.GetSheetAt(0);
            ICell TitleMsg = sheet1.GetRow(0).GetCell(0);

            IRow sourceRow = sheet1.GetRow(6);
            IRow headsourceRow = sheet1.GetRow(4);
            int i = 6, j;
            DateTime currentTime = DateTime.Now;
            TitleMsg.SetCellValue(string.Format("on:{0},{1} {2} {3} {4}", currentTime.DayOfWeek.ToString(), currentTime.Day, strMonth[currentTime.Month], currentTime.Year.ToString(), currentTime.TimeOfDay.ToString().Substring(0, 8)));
            //int headIndex = 4;
            IRow headerRow = sheet1.GetRow(3);
            ICell Region = sheet1.GetRow(4).GetCell(2);
            Region.SetCellValue(parameters["RegionText"].ToString());
            foreach (DataRow row in dt.Rows)
            {

                IRow irow = sheet1.CreateRow(i);

                j = 0;
                foreach (DataColumn column in dt.Columns)
                {

                    String value = row[dt.Columns[j].ColumnName].ToString();
                    ICell icell = irow.CreateCell(j);
                    icell.CellStyle = sourceRow.Cells[0].CellStyle;
                    icell.SetCellValue(value);
                    j++;
                }
                i++;
            }

            String filename = "newfile" + DateTime.Now.ToString("yyyyMMMdd_HHmmss") + ".xlsx";
            String fullpath = AppDomain.CurrentDomain.BaseDirectory + "Document\\Reports\\Output\\" + filename;

            FileStream files = new FileStream(fullpath, FileMode.Create);
            iworkbook.Write(files);
            files.Close();
            returnData.Add("filename", "Document\\Reports\\Output\\" + filename);
            if (File.Exists(fullpath))
            {
                return returnData;
            }
            else
            {
                return null;
            }

        }

2.前台使用Angular.js获取生成的表格并抛出浏览器提示:

            vm.downloadToExcel = function () {
                var promise = webapi.post("DownloadService", "DownloadToExcel", { "searchCriteria": vm.searchParamters, "validCriteria": vm.criteria });
                promise.then(
                    function (data) {
                        vm.filePath = data.data.filename;
                        if (vm.filePath != "") {
                            window.location.href = vm.filePath;
                        }
                    },
                    function (data) {
                        logger.error("error");
                    });
            };
时间: 2024-10-12 20:28:52

NPOI 写download Excel 功能的相关文章

Java中读取Excel功能实现_POI

这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html#POI-3.10-FINAL 百度网盘下载:http://pan.baidu.com/s/1i365mQT 导入根目录下.lib.ooxml-lib下的所有jar 4,操作读取excel import java.io.File; import java.io.IOException; import

NPOI导入导出Excel

.net mvc利用NPOI导入导出excel 1.导出Excel :首先引用NPOI包,从这里下载>download(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> /// <returns></returns> public FileResult ExportStu2() { //获取list数据 var checkList = (from oc in db.Or

Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力活:对于自动化测试与人工测试优缺势的问题,这里不想深入讨论,开一个博客收集一些观点然后开个讨论组讨论效果可能会更好. 标题上列的,是自己对web自动化这块统一的一个想象或是一套完整的自动化应所包含的的部分,目前完成了excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试

项目笔记:导出Excel功能分sheet页插入数据

导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN"); JxlUtil jsl = new JxlUtil(); List<Device> dataList =new ArrayList<Device>(); List<DeviceExport> list = new ArrayList<DeviceExport

扩展GridView导出Excel功能

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.CompilerServices;using System.Text;using System.Web;using System.Web.Compilation;using System.Web.UI;using System.Web.UI.WebControls; namespace Web{ 

flex 导出Excel功能实现

方法一: 1.Excel导出主要代码: try   {    var bytes: ByteArray = new ByteArray();    bytes.writeMultiByte(DataGridExporter.exportSCV(dataGrid),"cn-gb");    var fr:FileReference = new FileReference();    var date:Date = new Date();    var dateTime:String =

用JAVA写一个函数,功能如下: 任意给定一组数, 找出任意数相加之后的结果为35(任意设定)的情况

用JAVA写一个函数.功能如下:任意给定一组数,例如{12,60,-8,99,15,35,17,18},找出任意数相加之后的结果为35(任意设定)的情况. 可以递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int s

NPOI DataGridView导出EXCEL

NPOI 官方网站 http://npoi.codeplex.com/ 加载NPOI.DLL ,引用这两个命名空间 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; #region NPOI DataGridView 导出 EXCEL /// <summary> /// NPOI DataGridView 导出 EXCEL /// </summary> /// <param name="fileName"

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能 为了方便以后的应用切换,所以需要对 run.py 里的代码进行调整下. 1.在/demo 目录下创建 app_start.py /demo/app_start.py # config=utf-8 from demo