首页 > 编程语言 >C# 关于导出的Excel设置批注 设置格式为int类型 设置字体

C# 关于导出的Excel设置批注 设置格式为int类型 设置字体

时间:2023-11-07 16:57:19浏览次数:42  
标签:TypeCode C# Excel cell int 设置 var dt tc

将数据导出,导出Excel有时候需要一些条件,比如:1.需要给某一列的表头加批注;2:需要设置某一列为int格式

1.给某一列的表头加批注

1           List<string> texts = new List<string>();
2                 List<int> ids = new List<int>();
3                 texts.Add("这是一个批注");
4                 ids.Add(19);

上述为给第19列的表头设置批注:“这是一个批注”

 

2.给某列的格式设置为int类型

1                table.Columns[16].DataType = typeof(int);
2                table.Columns[18].DataType = typeof(double);             

 

3.导出上述指定格式的数据

 1 ExcelHelper.ExportToExcel(table, "会议调研统计导出-" + DateTime.Now.ToString("yyyyMMddHHmmss"), texts, ids); 

 1 public static void ExportToExcel(DataTable dt, string fileName, List<string> IComments, List<int> Cells)
 2         {
 3             try
 4             {
 5                 var ds = new DataSet();
 6                 ds.Tables.Add(dt);
 7                 ExportToExcel(ds, fileName, IComments,Cells);
 8             }
 9             catch (Exception ex)
10             {
11                 throw ex;
12             }
13         }
 1 public static void ExportToExcel(DataSet ds, string fileName,List<string> IComments,List<int> Cells)
 2         {
 3             IWorkbook wookBook = new XSSFWorkbook();
 4 
 5             ICellStyle headerStyle = wookBook.CreateCellStyle();
 6             var headerFont = wookBook.CreateFont();
 7             headerFont.FontHeightInPoints = 12;
 8             headerFont.FontName = "黑体";
 9             headerFont.Color = HSSFColor.BlueGrey.Index;
10             headerStyle.SetFont(headerFont);
11 
12             ICellStyle cellStyle = wookBook.CreateCellStyle();
13             //cellStyle.WrapText = true;//自动换行
14             cellStyle.VerticalAlignment = VerticalAlignment.Center;//垂直对齐  
15 
16             foreach (DataTable dt in ds.Tables)
17             {
18                 ISheet sheet = wookBook.CreateSheet(dt.TableName);
19                 IRow sheetColumn = sheet.CreateRow(0);
20 
21                 //写入列头
22                 for (int j = 0; j < dt.Columns.Count; j++)
23                 {
24                     var cell = sheetColumn.CreateCell(j);
25                     cell.SetCellValue(dt.Columns[j].ColumnName);
26                     cell.CellStyle = headerStyle;
27 
28                     sheet.AutoSizeColumn(j);//表格列宽自动调整,只能支持英文和数字
29                 }
30                 //写入行
31                 for (int i = 0; i < dt.Rows.Count; i++)
32                 {
33                     IRow row = sheet.CreateRow(i + 1);
34                     for (int j = 0; j < dt.Columns.Count; j++)
35                     {
36                         string gbStr = Encoding.GetEncoding("UTF-8").GetString(Encoding.UTF8.GetBytes(dt.Rows[i][j].ToString()));
37                         var cell = row.CreateCell(j);
38                         cell.CellStyle = cellStyle;
39 
40                         try
41                         {
42                             var dataType = dt.Columns[j].DataType;
43                             var tc = Type.GetTypeCode(dataType);
44                             if (tc == TypeCode.Int16 || tc == TypeCode.UInt16 || tc == TypeCode.Int32 || tc == TypeCode.UInt32 ||
45                                 tc == TypeCode.Int64 || tc == TypeCode.UInt64 || tc == TypeCode.Single || tc == TypeCode.Double || tc == TypeCode.Decimal)
46                             {
47                                 cell.SetCellType(CellType.Numeric);
48                                 double d;
49                                 double.TryParse(gbStr, out d);
50                                 cell.SetCellValue(d);
51                             }
52                             else
53                             {
54                                 cell.SetCellValue(gbStr);
55                             }
56                         }
57                         catch (Exception)
58                         {
59                         }
60                     }
61                 }
62             }
63             NPOI.SS.UserModel.ISheet newsheet = wookBook.GetSheetAt(0);
64             NPOI.SS.UserModel.IDrawing drawing = newsheet.CreateDrawingPatriarch();
65             int a = 0;
66             foreach (var item in IComments)
67             {
68                 NPOI.SS.UserModel.IComment comment1 = drawing.CreateCellComment(new NPOI.XSSF.UserModel.XSSFClientAnchor(0,0,0,0,0,0,0,0));
69                 comment1.Author = "";
70                 comment1.String = new NPOI.XSSF.UserModel.XSSFRichTextString(item);
71                 NPOI.SS.UserModel.IRow row = newsheet.GetRow(0);
72                 row.GetCell(Cells[0]).CellComment = comment1;
73                 a++;
74             }
75             var ms = new MemoryStream();
76             wookBook.Write(ms);
77 
78             //这里判断使用的浏览器是否为Firefox,Firefox导出文件时不需要对文件名显示编码,编码后文件名会乱码
79             //但是IE和Google需要编码才能保持文件名正常
80             if (HttpContext.Current.Request.ServerVariables["http_user_agent"].ToString().IndexOf("Firefox") != -1 ||
81                 HttpContext.Current.Request.ServerVariables["http_user_agent"].ToString().IndexOf("Safari") != -1)
82             {
83                 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
84             }
85             else
86             {
87                 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8) + ".xlsx");
88             }
89 
90             HttpContext.Current.Response.ContentType = "application/OCTET-STREAM;charset=UTF-8";
91             HttpContext.Current.Response.BinaryWrite(ms.ToArray());
92             HttpContext.Current.Response.End();
93             ms.Flush();
94             ms.Position = 0;
95             ms.Close();
96             ms = null;
97         }

 

标签:TypeCode,C#,Excel,cell,int,设置,var,dt,tc
From: https://www.cnblogs.com/wzzcc/p/17815372.html

相关文章

  • AtCoder Beginner Contest(abc) 319
    B-Measure难度:⭐题目大意给定一个数N,我们要求输出长度为n+1的一个序列Si(i从0到n),对于Si,如果存在j(j从1~9)是N的一个除数,并且i是N/j的一个倍数,那么Si就是满足条件的最小的j,如果没存在就输出'-';解题思路数据不大,暴力即可;神秘代码#include<bits/st......
  • 安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音......
  • China's Strategies on Air Pollution
    IntroductionAveragedpercentagechangesinPM2.5annualconcentrationsin31majorChinesecitiessince2015.Credit:ScienceChinaPressAnewstudyhasbeenconductedtounderstandwhethertherecentchangesinChina'sairqualityweredriven......
  • 集成电路(IC)MAX98050ENX、MAX22707AUB、MAX17543ATP、MAX40008ANT高效、低功耗器件产品
    1、MAX98050ENX音频编解码器是一款高性能、低功耗器件,集成了低延迟数字滤波器,用于无线耳戴式设备、头戴式设备和耳机。MAX98050具有一个单声道播放通道,带有一个5频段双四路均衡器和一个高效、全差分混合AB/D类耳机放大器。播放耳机放大器经过优化,可以实现最低输出噪声和静态功耗,同......
  • 11月7日form表单与input框以及select标签
    目录form表单与input框form表单input标签input其它属性说明:form与其它标签以及input的应用再来展示一下禁用以及隐藏的属性select标签form表单与input框form表单功能:表单用于向服务器传输数据,从而实现用户与web服务器的交互表单能够包含input系列标签,比如文本字段、复选框、......
  • VirtIO实现原理——PCI基础
    virtio设备可以基于不同总线来实现,本文介绍基于pci实现的virtio-pci设备。以virtio-blk为例,首先介绍PCI配置空间内容,virtio-pci实现的硬件基础——capability,最后分析PIC设备的初始化以及virtio-pci设备的初始化。PCI配置空间virtio设备作为pci设备,必须实现pcilocalbusspec......
  • 单个Nginx发布多个react静态页面
    在有些网络环境中,端口是一种比较稀缺的资源,而我们又恰好有多个前端项目需要发布,我们可以采取将多个项目映射到同一个端口上面的方案加以解决。本教程前端项目主要以react为主,部署在linux服务器上。1.将项目资源的访问地址修改为相对方式在react项目package.json中,添加或者修改......
  • C# 更新集合中某一个信息也是集合的数据
    比如一个集合中,还有一个多选项,此多选项是作为一个集合,传输在总的集合上,更新这个多选项集合的代码1.先更新总集合的基本数据2.针对这个多选项集合的值,更新多选项1//从DB删除已经删除的问题2if(exam.ID>0)3{4......
  • 华为云ubuntu1804安装rancherk8s
    apt-getinstalldocker.iodockerversionClient:Version:20.10.21APIversion:1.41Goversion:go1.18.1Gitcommit:20.10.21-0ubuntu1~18.04.3Built:ThuApr2705:50:212023OS/Arch:linux/amd6......
  • DataGridView的AutoGenerateColumns控制显示列
    在用C#的EF框架进行数据显示的时候出现了DataGridView显示未编辑列的问题,后来发现通过对DataGridView的 AutoGenerateColumns属性进行定义借可以解决AutoGenerateColumns属性默认未true,此时会显示所有,更改为false就可以了(此属性只能后台操控,代码加载main方法里)this.UsersDGV.......