zoukankan      html  css  js  c++  java
  • NPOI操作、导出Excel

      1  //使用NPOI操作Excel
      2     private void ExcelNPOI(System.Data.DataTable dt, HttpContext context)
      3     {
      4         IWorkbook workbook = null;//工作薄
      5         IRow row = null;//
      6         ICell cell = null;//单元格
      7         ISheet sheet = null;//工作表
      8         try
      9         {
     10             //如果表中查询的有数据
     11             if (dt != null && dt.Rows.Count > 0)
     12             {
     13                 //创建工作薄
     14                 //workbook = new HSSFWorkbook(); //导出后缀为xls
     15                 workbook = new XSSFWorkbook();//导出后缀为xlsx
     16                 sheet = workbook.CreateSheet("Sheet1");//创建一个名称为Sheet1的表  
     17                 int rowCount = dt.Rows.Count;//行数  
     18                 int columnCount = dt.Columns.Count;//列数 
     19 
     20                 //npoi设置Excel样式
     21                 ICellStyle cellStyle = workbook.CreateCellStyle();
     22                 //设置单元格为数字格式
     23                 cellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("0.00");
     24                 //居中对齐
     25                 cellStyle.Alignment = HorizontalAlignment.Center;
     26                 cellStyle.VerticalAlignment = VerticalAlignment.Center;
     27                 //边框
     28                 cellStyle.BorderTop = BorderStyle.Thin;
     29                 cellStyle.BorderBottom = BorderStyle.Thin;
     30                 cellStyle.BorderLeft = BorderStyle.Thin;
     31                 cellStyle.BorderRight = BorderStyle.Thin;
     32                 //创建一个字体样式对象
     33                 NPOI.SS.UserModel.IFont FontRow = workbook.CreateFont();
     34                 //设置字体样式
     35                 FontRow.FontName = "宋体";
     36                 //设置字体加粗样式
     37                 FontRow.Boldweight = (short)FontBoldWeight.Bold;
     38                 //设置字体大小
     39                 FontRow.FontHeightInPoints = 12;
     40                 //是否加粗
     41                 //FontRow.IsBold = false;
     42                 //字体样式添加进去
     43                 cellStyle.SetFont(FontRow);
     44 
     45                 //合并单元格 起始行号,终止行号, 起始列号,终止列号 execl的行列都是从0开始,而不是从1开始
     46                 sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 5));
     47 
     48                 //添加第一行 并赋值
     49                 row = sheet.CreateRow(0);
     50                 row.CreateCell(0).SetCellValue("");
     51                 cell = row.GetCell(0);
     52                 cell.CellStyle = cellStyle;
     53                 //添加第二行 定义表头
     54                 row = sheet.CreateRow(1);
     55                 //单元格赋值
     56                 row.CreateCell(0).SetCellValue("");
     57                 row.CreateCell(1).SetCellValue("");
     58                 row.CreateCell(2).SetCellValue("");
     59                 row.CreateCell(3).SetCellValue("");
     60                 row.CreateCell(4).SetCellValue("");
     61                 row.CreateCell(5).SetCellValue("");
     62 
     63                 //设置列宽
     64                 sheet.SetColumnWidth(0, 60 * 265);
     65                 sheet.SetColumnWidth(1, 17 * 265);
     66                 sheet.SetColumnWidth(2, 17 * 265);
     67                 sheet.SetColumnWidth(3, 17 * 265);
     68                 sheet.SetColumnWidth(4, 17 * 265);
     69                 sheet.SetColumnWidth(5, 17 * 265);
     70 
     71                 //设置行高 第一行
     72                 row = sheet.GetRow(0);
     73                 row.Height = short.Parse((22.5 * 20).ToString());
     74                 //使用SetFont方法将字体样式添加到单元格样式中 
     75                 cellStyle.SetFont(FontRow);
     76                 
     77                 //设置行高 第二行
     78                 row = sheet.GetRow(1);
     79                 row.Height = short.Parse((18.5 * 20).ToString());
     80                 //获得第二行的单元格
     81                 List<ICell> cells = row.Cells;
     82                 for (int i = 0; i < cells.Count; i++)
     83                 {
     84                     //获得当前行
     85                     cell = row.GetCell(i);
     86                     //设置样式
     87                     cell.CellStyle = cellStyle;
     88                 }
     89 
     90                 //写入数据
     91                 for (int i = 0; i < rowCount; i++)
     92                 {
     93                     //创建新行
     94                     row = sheet.CreateRow(i + 2);
     95                     //定义新行行高
     96                     row.Height = short.Parse((13.5 * 20).ToString());
     97                     for (int j = 0; j < columnCount; j++)
     98                     {
     99                         if (j - 1 >= 0)
    100                         {
    101                             //创建新的单元格
    102                             cell = row.CreateCell(j - 1);
    103                             //赋值
    104                             cell.SetCellValue(dt.Rows[i][j].ToString());
    105                             cell.CellStyle = cellStyle;
    106                         }
    107                     }
    108                 }
    109                 string Excelfile = context.Server.MapPath("路径");
    110                 string path = context.Server.MapPath("excel再上一级的路径");
    111                 DirectoryInfo folder = new DirectoryInfo(path);
    112                 //文件夹是否存在当前Excel
    113                 foreach (FileInfo file in folder.GetFiles("*.xlsx"))
    114                 {
    115                     if (file.FullName == Excelfile)
    116                     {
    117                         try
    118                         {
    119                             File.Delete(Excelfile);
    120                         }
    121                         catch (Exception ex)
    122                         {
    123                             Console.Write(ex.Message);
    124                         }
    125                     }
    126                 }
    127                 using (FileStream file = new FileStream(Excelfile, FileMode.Create))
    128                 {
    129                     workbook.Write(file);  //写入数据 创建文件。
    130                     file.Close();
    131                 }
    132             }
    133         }
    134         catch (Exception ex)
    135         {
    136         }
    137     }
  • 相关阅读:
    shell脚本--php执行普通shell命令
    shell脚本--eval执行shell命令
    shell脚本--CGI获取请求数据(GET / POST)
    shell脚本--编写CGI代码(shell结合html)以及环境变量
    shell脚本--初识CGI
    数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
    写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
    输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
    写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
    字符串分隔 ->连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
  • 原文地址:https://www.cnblogs.com/xiemin-minmin/p/11730455.html
Copyright © 2011-2022 走看看