使用NPOI时写的几个辅助方法
简介:包含:获取单元格合并信息GetMergedCellAddress、获取引用单元格字符串ConvertAddressToString、获取单元格字符串格式内容CellValueToString
public class ExcelHelper
{
/// <summary>
/// Return cell's CellRangeAddress if that is a merged cell, otherwise return null
/// </summary>
/// <param name="cell">the cell will be checked</param>
/// <returns>the cell's CellRangeAddress</returns>
public static CellRangeAddress GetMergedCellAddress(ICell cell)
{
//not merged cell
if (cell.IsMergedCell == false)
return null; int MergedRegionsNum = cell.Sheet.NumMergedRegions;
for(int index = ; index < MergedRegionsNum; index++)
{
CellRangeAddress address = cell.Sheet.GetMergedRegion(index);
if (address.FirstRow == cell.RowIndex && address.FirstColumn == cell.ColumnIndex)
return address;
} //no match
return null;
} /// <summary>
/// 将Excel行列索引号(从0开始)转换为引用地址,分非R1C1格式(默认)和R1C1格式
/// </summary>
/// <param name="rowIndex">行索引号(从0开始)</param>
/// <param name="columnIndex">列索引号(从0开始)</param>
/// <param name="isR1C1Format">是否R1C1格式(默认为否)</param>
/// <returns>Excel单元格引用地址字符串</returns>
public static string ConvertAddressToString(int rowIndex, int columnIndex, bool isR1C1Format = false)
{
if (rowIndex < || columnIndex < )
throw new IndexOutOfRangeException("行/列索引号不可为负数");
if (isR1C1Format)
//R1C1格式行号在前列号在后 eg:R2C3 第2行第3列
return string.Format("R{0}C{1}", rowIndex + , columnIndex + );
else
{
//非R1C1格式列号在前行号在后 eg:C5 第5行第3列
//convert column num to letter
int num = columnIndex;
string colAddress = string.Empty;
while(num > -)
{
int remainder = num >= ? num % : num;
colAddress = (char)(remainder + ) + colAddress;
num = (num / ) - ;
} return string.Format("{1}{0}", rowIndex + , colAddress);
}
} /// <summary>
/// 获取Excel单元格引用地址,分非R1C1格式(默认)和R1C1格式
/// </summary>
/// <param name="cell">引用单元格</param>
/// <param name="isR1C1Format">是否R1C1格式(默认为否)</param>
/// <returns>Excel单元格引用地址字符串</returns>
public static string ConvertAddressToString(ICell cell, bool isR1C1Format = false)
{
return ConvertAddressToString(cell.RowIndex, cell.ColumnIndex, isR1C1Format);
} /// <summary>
/// 获取Excel单元格值(字符串格式)
/// </summary>
/// <param name="cell">单元格</param>
/// <returns>单元格字符串格式值内容</returns>
public static string CellValueToString(ICell cell)
{
if (cell == null)
return null;
switch (cell.CellType)
{
case CellType.Blank:
return string.Empty;
case CellType.String:
return cell.StringCellValue;
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
case CellType.Error:
return cell.ErrorCellValue.ToString();
case CellType.Formula:
return cell.CellFormula;
case CellType.Numeric:
case CellType.Unknown:
default:
return cell.ToString();
}
}
}
使用NPOI时写的几个辅助方法的更多相关文章
- 分享一个异步任务在遇到IO异常时支持递归回调的辅助方法
public void TryAsyncActionRecursively<TAsyncResult>( string asyncActionName, Func<Task<T ...
- 004.MVC视图、辅助方法
一.视图基础- 视图定义: 用户界面,是显示应用程序用户界面(UI)组件 Web应用程序:页面 作用: 1.输出/显示模型数据 2.出入提交 视图建议在View文件夹位置存储视图 视图引擎(了解):本 ...
- 32-HTML辅助方法
顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...
- HTML辅助方法
顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...
- MVC 之HTML辅助方法
顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...
- MVC HTML辅助方法
HTML辅助方法(HTML Helper)用来辅助产生HTML,在开发View的时候会面对许多HTML标签,处理这些HTML标签非常繁琐,为了降低View的复杂度,可以使用HTML辅助方法帮助你产生一 ...
- 【未完待续】MVC 之HTML辅助方法
顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用, 在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用H ...
- Livid : 在 26 岁时写给 18 岁的自己
转载自: https://livid.v2ex.com/essays/2012/01/24/a-letter-from-26-to-18.html 在 26 岁时写给 18 岁的自己 Jan 24, ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
随机推荐
- Xwiki平台Windows搭建(Tomcat7 + XWiki6.2 + MySQL5.5)
背景介绍 国内xwiki安装使用资料较少,根据自己使用xwiki经验,总结出来,供参考,同时希望感兴趣的朋友能够一起讨论,XWiki是一个强大的Java开源的Wiki引擎. 它支持一些受欢迎的特性如: ...
- IIS Modules Overview
Introduction The IIS 7 and above Web server feature set is componentized into more than thirty indep ...
- HTML <button> 标签
HTML <button> 标签 目标 实现点击button跳转到一个新的界面 参考文档 实例 以下代码标记一个按钮: <button type="button" ...
- 15.C语言多线程实现变色龙以及cmd窗口标题变化
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <Wind ...
- COGS 577 蝗灾 线段树+CDQ分治
第一次写cdq分治 感谢hhd<y 这20亿对CP的指导(逃) 其实 就是 递归看左半部分对右半部分的贡献 (树状数组写挂了--临时改的线段树[大写的尴尬]) //By SiriusRen ...
- Cisco交换机端口安全
Cisco交换机端口安全 通过端口设置,可以限制允许访问交换机上某个端口的MAC地址以及IP(可选)来实现严格控制对该端口的输入,最终确保网络接入安全.配置网络安全时应该注意如下问题: 1 ...
- jquery<=======>js实现方法
http://haorooms.com/post/js_shixian_jquery
- Smart Pointer Guidelines
For Developers > Smart Pointer Guidelines What are smart pointers? Smart pointers are a specif ...
- ES6学习笔记(四)数值的扩展
1.二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 0b111110111 === 503 // true 0o767 === 503 ...
- Javascript 模块化理解
原始时代: script标签引入javascript文件 -------- html ------- <div id="result"></div> < ...