ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

c#操作数据库导出Excel表

2021-07-28 14:32:39  阅读:242  来源: 互联网

标签:c# Excel 数据库 HSSFCell item GetCell query SetCellValue row


首先:添加GET包:

Microsoft.Office.Interop.Excel;

其次:添加命名空间:

1、using Netover.Foundation.Common;
2、using Netover.Foundation.Web;
3、using NPOI.HSSF.UserModel;

之后:读取数据库中导出的表(这里用的是莱姆达表达式)

IQueryable<PlanInfo> query = db.PlanInfo.Where(a => a.Isdeleted == 0);
            if (!string.IsNullOrEmpty(Request["txtUserName"])) //筛选条件
            {
                query = query.Where(a => a.Title.Contains(Request["txtUserName"]) );
            }
            if (!string.IsNullOrEmpty(Request["hidden"]))//筛选条件
            { 
query = query.Where(a => a.Dept.ToString().Contains(Request["hidden"]));
}
 Export(query);

之后:读取Excel模板(模板附带表头)

private void Export(IQueryable<PlanInfo> query)
    {
        string path = Server.MapPath("~/Content/Templet/") + "计划审批模板.xls";
        HSSFWorkbook workbook;
        using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            workbook = new HSSFWorkbook(file);
        }
        HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(0);
        for (int i = 1; i < (query.Count() + 1); i++)
        {
            HSSFRow row = (HSSFRow)sheet.GetRow(i);
            //将空白行复制到下一行
            row.CopyRowTo(i + 1);
            var item = query.OrderBy(a => a.Number).Skip(i - 1).FirstOrDefault();

            #region 设置单元格的值
            HSSFCell cell1 = (HSSFCell)row.GetCell(0);
            cell1.SetCellValue(i);
            HSSFCell cell2 = (HSSFCell)row.GetCell(1);
            cell2.SetCellValue(item.Title);
            HSSFCell cell3 = (HSSFCell)row.GetCell(2);
            cell3.SetCellValue(item.ActiTypeName);
            HSSFCell cell4 = (HSSFCell)row.GetCell(3);
            cell4.SetCellValue(ConvertHelper.ConvertToString(item.BeginTime));
            HSSFCell cell5 = (HSSFCell)row.GetCell(4);
            cell5.SetCellValue(ConvertHelper.ConvertToString(item.EndTime));
            HSSFCell cell6 = (HSSFCell)row.GetCell(5);
            cell6.SetCellValue(ConvertHelper.ConvertToString(item.SiteName));
            HSSFCell cell7 = (HSSFCell)row.GetCell(6);
            cell7.SetCellValue(ConvertHelper.ConvertToString(item.stateName));
            HSSFCell cell8 = (HSSFCell)row.GetCell(7);
            cell8.SetCellValue(ConvertHelper.ConvertToString(item.Content));
            #endregion
        }
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        string filename = HttpUtility.UrlEncode(DateTime.Now.ToString("计划审批名单"));
        Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
        Response.ContentType = "application/ms-excel";
        workbook.Write(Response.OutputStream);

 

标签:c#,Excel,数据库,HSSFCell,item,GetCell,query,SetCellValue,row
来源: https://www.cnblogs.com/Simple-520/p/15070296.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有