使用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帮助类, ...
随机推荐
- atitit.js 与c# java交互html5化的原理与总结.doc
atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. ...
- js插件---图片裁剪photoClip
js插件---图片裁剪photoClip 一.总结 一句话总结:页面裁剪图片得到base64格式的图片数据,然后把这个数据通过ajax上传给服务器,服务器将base64图片数据解析成图片并且保存到服务 ...
- Gym - 100637A Nano alarm-clocks 模拟
题意:有n个时钟,只能顺时针拨,问使所有时间相同的最小代价是多少 思路:将时间排序,枚举拨动到每一个点的时间就好了,容易证明最终时间一定是其中之一 #include <iostream> ...
- Hyper-v Server安装与配置-新加GUI界面配置工具介绍
650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...
- CSS3新的UI方案
文本新增样式 一.opacity:指定了一个元素的透明度 0~1 二.新增颜色模式rgba:很好的解决了背景透明,字体颜色不透明的需求. 三.文字阴影:text-shadow用来为文字添加阴影,而且可 ...
- Android manifest文件中的标签详细介绍
官方文档 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字 ...
- Java并发包之Semaphore用法
多线程中的同步概念就是排着队去执行一个任务,执行任务的是一个一个的执行,并不能并行执行,这样的优点是有助于程序逻辑的正确性,不会出现线程安全问题,保证软件的系统功能上的运行稳定性, Semaphore ...
- 使用IntelliJ IDEA开发前的基本设置,有助于提高开发效率
2.界面字体大小设置 File菜单->Settings->Appearance->Override default fonts by(not recommended): Name:宋 ...
- 动态游标(比如表名作为參数)以及动态SQL分析
表名作为參数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...
- select选择框实现跳转
select选择框实现跳转 零.启示 1.启示把bom里面的几个对象稍微有点印象,那么主干有了,学其它的就感觉添置加瓦,很简单 就是关注树木的主干 2.万能的百度,不过当然要你基础好学得多才能看得懂, ...