c# excel xls保存

  public HSSFWorkbook Excel_Export(DataTable query,string title,int[] rowweight,string[] rowtitle)
        {

            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.CreateSheet("Sheet1") as HSSFSheet;
            IRow row = sheet.CreateRow(0);
            int ii = 0;

            Color c = Color.FromArgb(215, 228, 188);
            HSSFPalette palette = workbook.GetCustomPalette();
            palette.SetColorAtIndex((short)63, c.R, c.G, c.B);
            HSSFColor cellColor = palette.FindColor(c.R, c.G, c.B);

            ICellStyle style = workbook.CreateCellStyle();
            style.Alignment = HorizontalAlignment.Center;
            style.WrapText = true;
            style.BorderLeft = BorderStyle.Thin;
            style.BorderRight = BorderStyle.Thin;
            style.BorderTop = BorderStyle.Thin;
            style.BorderBottom = BorderStyle.Thin;
            style.VerticalAlignment = VerticalAlignment.Center;
            style.FillPattern = FillPattern.SolidForeground;
            style.FillForegroundColor = cellColor.Indexed;
            IFont font = workbook.CreateFont();
            font.FontHeightInPoints = 11;
            font.FontName = "微软雅黑";
            font.IsBold = true;
            style.SetFont(font);

            ICell cell = row.CreateCell(ii);

            if(!string.IsNullOrEmpty(title))
            {
                row.Height = 50 * 20;
                cell.SetCellValue(title);
                cell.CellStyle = style;
                sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, query.Columns.Count-1));
                ii += 1;
            }

            style = workbook.CreateCellStyle();
            style.Alignment = HorizontalAlignment.Left;
            style.WrapText = true;

            style.VerticalAlignment = VerticalAlignment.Center;
            style.BorderLeft = BorderStyle.Thin;
            style.BorderRight = BorderStyle.Thin;
            style.BorderTop = BorderStyle.Thin;
            style.BorderBottom = BorderStyle.Thin;
            style.FillPattern = FillPattern.SolidForeground;
            style.FillForegroundColor = cellColor.Indexed;
            font = workbook.CreateFont();
            font.FontHeightInPoints = 11;
            font.FontName = "微软雅黑";
            style.SetFont(font);


            IRow row1 = sheet.CreateRow(ii);
            row1.Height = 60 * 20;

            int i = 0;
            if(rowtitle.Length>0)
                foreach (var item in rowtitle)
                {
                    cell = row1.CreateCell(i);
                    cell.SetCellValue(item.ToString());
                    cell.CellStyle = style;
                    i += 1;
                }
            else
                foreach (var item in  query.Columns)
                {
                    cell = row1.CreateCell(i);
                    cell.SetCellValue(item.ToString());
                    cell.CellStyle = style;
                    i += 1;
                }
      
            for ( i = 0; i < rowweight.Length; i++)
            {
                if (rowweight[i] > 0)
                {
                    row1.Cells[i].CellStyle = style; //把样式赋给单元格
                    sheet.SetColumnWidth(i, rowweight[i] * 256);//设置列宽
                }
            }
            i = 0;
            row.Height = 30 * 20;
            style = workbook.CreateCellStyle();
            style.WrapText = true;
            style.Alignment = HorizontalAlignment.Left;
            style.VerticalAlignment = VerticalAlignment.Center;
            style.BorderLeft = BorderStyle.Thin;
            style.BorderRight = BorderStyle.Thin;
            style.BorderTop = BorderStyle.Thin;
            style.BorderBottom = BorderStyle.Thin;
            font = workbook.CreateFont();
            font.FontHeightInPoints = 10;
            font.FontName = "微软雅黑";
            style.SetFont(font);
            for (int n = 0; n < query.Rows.Count; n++)
            {
                ii += 1;
                IRow rowtemp = sheet.CreateRow(ii);
                for (int j = 0; j < query.Columns.Count; j++)
                {
                    cell = rowtemp.CreateCell(j);
                    cell.CellStyle = style;
                    cell.SetCellValue(query.Rows[n][j]?.ToString() ?? "");  
              
                 }
            }
            return workbook;
        }

 

  //写文件
            MemoryStream ms = new MemoryStream();
            workbook.Write(ms);
            ms.Flush();
            ms.Seek(0, SeekOrigin.Begin); //ms.Position = 0;


            string fileName = string.Concat(string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now), ".xls");
            return File(ms, "application/vnd.ms-excel", fileName);

 

转载于:https://www.cnblogs.com/LiuFengH/p/10576955.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值