ExcelTools使用

摘要:
string。空:单元格。StringCellValue;caseCellType。Error://ERROR:returncell.ErrorCellValue.ToString (); caseCellType。Formula://FORMULA:default:return“=”+单元格。CellFormula;}catch{returnstring.Empty;}}//////获取单元格类型////////publicstaticstringOtherGetValueTypeForXLS{try{ifreturnstring.Empty;switch{caseCellType.Blank://BLANK:returnstring.Empty ; caseCellType。Boolean://BOOLEAN:returncell.BooleanCellValue.ToString (); caseCellType。Numeric://NUMERIC:if{DateTimeD=cell.DateCellValue;返回?
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImportClient
{
    public class ExcelTool
    {

        public static Dictionary<string, int> SetColumncaption(IRow header)
        {
            Dictionary<string, int> columns = new Dictionary<string, int>();
            for (int i = 0; i < header.LastCellNum; i++)
            {
                string strcaption = header.GetCell(i).ToString();
                if (strcaption != null && strcaption.Length > 0)
                {
                    columns.Add(strcaption, i);
                }
            }
            return columns;
        }

        /// <summary>  
        /// 获取单元格类型(xls)  
        /// </summary>  
        /// <param name="cell"></param>  
        /// <returns></returns>  
        public static string GetValueTypeForXLS(ICell cell)
        {
            try
            {
                if (cell == null)
                    return string.Empty;
                switch (cell.CellType)
                {
                    case CellType.Blank: //BLANK:  
                        return string.Empty;
                    case CellType.Boolean: //BOOLEAN:  
                        return cell.BooleanCellValue.ToString();
                    case CellType.Numeric: //NUMERIC:
                        return cell.NumericCellValue.ToString();
                    case CellType.String: //STRING:  
                        return cell.StringCellValue == null ? string.Empty : cell.StringCellValue;
                    case CellType.Error: //ERROR:  
                        return cell.ErrorCellValue.ToString();
                    case CellType.Formula: //FORMULA:  
                    default:
                        return "=" + cell.CellFormula;
                }
            }
            catch (Exception e)
            {
                return string.Empty;
            }

        }


        /// <summary>  
        /// 获取单元格类型(xls)  
        /// </summary>  
        /// <param name="cell"></param>  
        /// <returns></returns>  
        public static string OtherGetValueTypeForXLS(ICell cell)
        {
            try
            {
                if (cell == null)
                    return string.Empty;
                switch (cell.CellType)
                {
                    case CellType.Blank: //BLANK:  
                        return string.Empty;
                    case CellType.Boolean: //BOOLEAN:  
                        return cell.BooleanCellValue.ToString();
                    case CellType.Numeric: //NUMERIC:
                        if (DateUtil.IsValidExcelDate(cell.NumericCellValue) && DateUtil.IsCellDateFormatted(cell))
                        {
                            DateTime D = cell.DateCellValue;
                            return (D.ToString().Length == 0 || D.ToString().Contains("#")) ? " " : D.ToString();
                        }
                        else
                        {
                            return cell.NumericCellValue.ToString();
                        }
                    case CellType.String: //STRING:  
                        return cell.StringCellValue == null ? string.Empty : cell.StringCellValue;
                    case CellType.Error: //ERROR:  
                        return cell.ErrorCellValue.ToString();
                    case CellType.Formula: //FORMULA:  
                    default:
                        return "=" + cell.CellFormula;
                }
            }
            catch (Exception e)
            {
                return string.Empty;
            }

        }

    }
}

  

 调用:

using DCZY.Base.Param;
using DCZY.Bean;
using DCZY.Bean.LocationDevice;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using PLog;
using PTool;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;

namespace DCZY.BISC.OperationPost
{
    public class OperationPostFromExcel
    {
        private string _strfilename = string.Empty;
        public OperationPostFromExcel(string strfilename)
        {
            _strfilename = strfilename;
        }

        public List<OperationVariablePostInfo> GetInfo()
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                FileStream fs = new FileStream(_strfilename, FileMode.Open, FileAccess.Read);
                IWorkbook hssfworkbook = new XSSFWorkbook(fs);
                ISheet sheet = hssfworkbook.GetSheet("岗位配置表 (2)");
                List<OperationVariablePostInfo> devicecollection = new List<OperationVariablePostInfo>();
                IRow header = sheet.GetRow(sheet.FirstRowNum);
                Dictionary<string, int> colcollection = ExcelTool.SetColumncaption(header);
                //数据  
                for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++)
                {
                    OperationVariablePostInfo info = new OperationVariablePostInfo();
                    info.Name = ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["岗位名称"]));
                    if (info.Name == null)
                    {
                        info.Name = string.Empty;
                    }
                    info.Firstgwname = ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["一级岗位"]));
                    info.Gwname = ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["二级岗位"]));
                    string lookwith= ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["是否盯控"]));
                    if (lookwith.Length == 0)
                    {
                        info.Islookwith = false;
                    }
                    else
                    {
                        info.Islookwith = true;
                    }
                    //info.Islookwith=
                    info.Posttype = new ParamInfo();
                    info.Posttype.Name = ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["岗位类型"]));
                    info.Organization = new OrganizationInfo();
                    info.Organization.Name = ExcelTool.OtherGetValueTypeForXLS(sheet.GetRow(i).GetCell(colcollection["车站"]));
                    devicecollection.Add(info);
                }
                return devicecollection;
            }
            catch (Exception e)
            {
                Log.WriteError(e.Message);
                return null;
            }

        }

    }
}

  

免责声明:文章转载自《ExcelTools使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux分区方案gitbook安装与使用之windows下搭建gitbook平台下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询

一、Geomesa - QuickStart(教程工程包) 百度网盘下载地址:geomesa-tutorials-master.7z 二、解压后,IDEA编译如下 百度网盘下载地址:IDEA2018破解版安装 三、根据日期范围查询 1 @Test 2 public void query() throwsException { 3 4...

SortedList、SortedSet、HashSet、Hashtable、Dictionary、SortedDictionary 排序/可重复排序/过滤重复排序等简单对比

//泛型的键值集合/有序/Hash算法/占内存较大/不排序,不受装填因子的限制,对读写操作效率较高 Dictionary<int, string> dc = new Dictionary<int, string>(); dc.Add(1, "111111");...

从未如此简单:10分钟带你逆袭Kafka!【转】

【51CTO.com原创稿件】Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点。 较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容错的特性,非常适合大规模消息...

Flink--将表转换为DataStream或DataSet

A Table可以转换成a DataStream或DataSet。通过这种方式,可以在Table API或SQL查询的结果上运行自定义的DataStream或DataSet程序 将表转换为DataStream 有两种模式可以将 Table转换为DataStream: 1:Append Mode 将一个表附加到流上 2:Retract Mode 将表转换为流...

【Lua】手游聊天系统客户端完成总结

网上很多例子,我是参考这篇文章:http://www.myexception.cn/operating-system/1591495.html 1.聊天系统难题一:消息需要支持插入表情和换行。 一开始我打算借鉴上面文章中的方法自己用label和image拼接实现自己的富文本,后来同事建议我使用cocos2dx自带的富文本空间RichText,网上找了一些例...

SALT+HASH撒盐加密

#region 撒盐加密 string salt = Guid.NewGuid().ToString(); byte[] passwordAndSaltBytes = System.Text.Encoding.UTF8.GetBytes(model.Password + salt);...