NPOI读取Excel生成DataTable转为Json后利用LitJons读取

NPOI:http://npoi.codeplex.com/

LitJson:https://code.google.com/p/litjsonmd/downloads/list

using System.Data;
using System.IO;
using NPOI.SS.UserModel;
using System.Text;/// <summary>
/// 获取json字符串的类
/// </summary>
public class GetJson
{/// <summary>/// 得到DataTable的方法/// </summary>/// <param name="filePath">传入Excel所在的路径</param>/// <param name="tableName">传入Table的name</param>/// <returns></returns>public static DataTable GetTable(string filePath, string tableName){DataTable table = new DataTable(tableName);if (File.Exists(filePath)){using (FileStream fStream = File.OpenRead(filePath)){IWorkbook workBook = WorkbookFactory.Create(fStream);ISheet sheet1 = workBook.GetSheetAt(0);IRow headRow = sheet1.GetRow(0);int cellCount = headRow.LastCellNum;for (int m = headRow.FirstCellNum; m < cellCount; m++){string headCellValue = headRow.GetCell(m).StringCellValue;table.Columns.Add(headCellValue);}int rowCount = sheet1.LastRowNum;for (int i = (sheet1.FirstRowNum + 1); i < rowCount + 1; i++){DataRow dataRow = table.NewRow();IRow row = sheet1.GetRow(i);for (int j = row.FirstCellNum; j < cellCount; j++){if (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString();}table.Rows.Add(dataRow);}}}return table;}/// <summary>/// 得到json字符串的类/// </summary>/// <param name="dt">传入要生成json字符串的Table</param>/// <returns></returns>public static string GetJsonStr(DataTable dt){StringBuilder jsonBuilder = new StringBuilder();int count = dt.Rows.Count;if (count != 0){jsonBuilder.Append("{");jsonBuilder.Append("\'");//for (int j = 0; j < dt.Columns.Count; j++)//{//    jsonBuilder.Append(dt.Rows[i][0].ToString());//    break;//}
            jsonBuilder.Append(dt.TableName);jsonBuilder.Append("\'");jsonBuilder.Append(":");jsonBuilder.Append("[");for (int i = 0; i < dt.Rows.Count; i++){//jsonBuilder.Append("\'");//for (int j = 0; j < dt.Columns.Count; j++)//{//    jsonBuilder.Append(dt.Rows[i][0].ToString());//    break;//}//jsonBuilder.Append("\'");//jsonBuilder.Append(":");jsonBuilder.Append("{");for (int j = 0; j < dt.Columns.Count; j++){jsonBuilder.Append("");jsonBuilder.Append("\'");jsonBuilder.Append(dt.Columns[j].ColumnName);jsonBuilder.Append("\'");jsonBuilder.Append(":");if (!IsNum(dt.Rows[i][j].ToString())){jsonBuilder.Append("\'" + dt.Rows[i][j].ToString() + "\'");}else{jsonBuilder.Append(dt.Rows[i][j].ToString());}jsonBuilder.Append(",");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("},");}jsonBuilder.Remove(jsonBuilder.Length - 1, 1);jsonBuilder.Append("]");jsonBuilder.Append("}");return jsonBuilder.ToString();}else{return null;}}/// <summary>/// 判断是否为数字/// </summary>/// <param name="number">要判断的string字符串</param>/// <returns>true/false</returns>private static bool IsNum(string number){try{for (int i = 0; i < number.Length; i++){if (!char.IsNumber(number, i)){return false;}}return true;}catch{return false;}}
}

 

转载于:https://www.cnblogs.com/HelloUnity/p/NPOI%e8%af%bb%e5%8f%96Excel%e7%94%9f%e6%88%90DataTable%e8%bd%ac%e4%b8%baJson%e5%90%8e%e5%88%a9%e7%94%a8LitJons%e8%af%bb%e5%8f%96.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

失落城堡手游获取服务器信息99,失落城堡手游最近更新什么? ios同步疯国王击杀活动...

失落城堡手游1.1.0.20优化什么&#xff1f;作为活动副本&#xff0c;有着出色玩法。小编带来玩法详情&#xff0c;新版战斗来临。ios同步疯国王击杀活动【新增类】1、支持适配盖世小鸡手柄&#xff1a;-安卓&#xff1a;Gamesir-G4(增强版)、Gamesir-G4、飞智八爪鱼、Gamesir-G…

中文课程!台大李宏毅机器学习公开课2019版上线

转载自&#xff1a;机器之心机器之心编辑参与&#xff1a;思源、泽南台大教授李宏毅的机器学习课程经常被认为是中文开放课程中的首选。李教授的授课风格风趣幽默&#xff0c;通俗易懂&#xff0c;其课程内容中不仅有机器学习、深度学习的基础知识&#xff0c;也会介绍 ML 领域…

wcl怀旧服网站中文查服务器fb进度,魔兽世界怀旧服wa插件字符串分享 WCL评分和服务器排行查询...

魔兽世界怀旧服wa插件字符串分享&#xff0c;使用本字符串后&#xff0c;当团队有新团员时&#xff0c;自动通报其职业、服务器排名、TAQ评分/排名、BWL评分/排名、MC评分/排名。需要的朋友快来分享吧。NGA夜梦幻整理&#xff0c;先上效果图增加了仅团长/队长/A人员通报开关首先…

模型评估、过拟合欠拟合以及超参数调优方法

机器学习入门系列&#xff08;2&#xff09;–如何构建一个完整的机器学习项目&#xff0c;第十一篇&#xff01; 该系列的前 10 篇文章&#xff1a; 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理&a…

redis服务器信息统计,利用Redis统计网站在线活跃用户的方法

前言在工作中我们经常遇到这样的需求&#xff0c;要对某个在线网站的活跃用户数量进行统计。这里我们以redis为例,说明一下其实现的过程。实现方法在Redis中存在bitmap这种数据类型,这种数据类型是建立在string数据类型之上的。这里,我们主要用到setbit、bitcount这2个命令,而使…

C++ Primer 有感(new和delete表达式)

定义变量时&#xff0c;必须指定其数据类型和名字。而动态创建对象时&#xff0c;只需指定其数据类型&#xff0c;而不必为该对象命名。取而代之的是&#xff0c;new表达式返回指向性创建的指针。1.动态创建对象的默认初始化对于类类型的对象&#xff0c;用该类的默认构造函数初…

win10没有windows无线服务器,win10系统电脑没windows无线服务的解决方法

很多小伙伴都遇到过win10系统电脑没windows无线服务的困惑吧&#xff0c;一些朋友看过网上零散的win10系统电脑没windows无线服务的处理方法&#xff0c;并没有完完全全明白win10系统电脑没windows无线服务是如何解决的&#xff0c;今天小编准备了简单的解决办法&#xff0c;只…

初学者的机器学习入门实战教程!

原文链接&#xff1a;https://www.pyimagesearch.com/2019/01/14/machine-learning-in-python/ 作者&#xff1a;Adrian Rosebrock 这是一篇手把手教你使用 Python 实现机器学习算法&#xff0c;并在数值型数据和图像数据集上运行模型的入门教程&#xff0c;当你看完本文后&…

JAVA面试题集

基础知识&#xff1a; 1.C或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时&#xff0c;JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;…

原生js实现一个tab栏的标签操作

我是歌谣 闲来无事做 就不如写写代码 本次不过多对原生的操作进行说法 我们直接上代码 效果图 有一个index.html的文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatib…

搜索和在线阅读 Github 代码的插件推荐

2019 年第 31 篇&#xff0c;总 55 篇文章上一篇文章 推荐了 3 个 Github 相关的项目&#xff0c;这次继续推荐 3 个项目&#xff0c;严格说是 3 个插件&#xff0c;主要是帮助搜索 Github 项目和在线阅读代码的插件。1. GitHunt第一个是帮助搜索在指定时间内 Star 数量增长最多…

下载开发证书步骤(自用备忘)

下开发证书步骤 1.https://developer.apple.com/cn/ 2.https://developer.apple.com/devcenter/ios/index.action 3.Certificates, Identifiers & Profiles 4.Provisioning Profiles 转载于:https://www.cnblogs.com/joesen/p/3158284.html

磁盘阵列服务器Intel C610系列,超微6048R-E1CR36N 36盘位存储服务器 磁盘阵列

Key Features1. Dual socket R3 (LGA 2011) supportsIntel Xeon processor E5-2600v4†/ v3 family; QPI up to 9.6GT/s2. Up to 3TB† ECC 3DS LRDIMM , up toDDR4- 2400†MHz ; 24x DIMM slots3. 2 PCI-E 3.0 x16, 3 PCI-E 3.0 x8.1 PCI-E 2.0 x4 (in x8)Slot 3 &4 occup…

手动封装element-ui里面的button组件

首先我们知道vue里面包含有父子组件 但是你知道如果要进行一个element的手动组件封装 怎么封装吗 1首先第一步 首先我们建立一个组件 最好设置在一个文件目录下比如components 只是一个普通的组件 叫做OneButton.vue <template><button class"one-button&…

GIS数据里的4D数据

数字高程模型&#xff08;Digital Elevation Model&#xff0c;缩写DEM&#xff09;是在某一投影平面&#xff08;如高斯投影平面&#xff09;上规则格网点的平面坐标&#xff08;X&#xff0c;Y&#xff09;及高程&#xff08;Z&#xff09;的数据集。DEM的格网间隔应与其高程…

Python 基础入门--简介和环境配置

2019 年第 32 篇&#xff0c;总 56 篇文章本文大约 1w 字&#xff0c;建议收藏阅读上周结束了如何构造一个机器学习项目的系列文章&#xff0c;当然还有一篇简单的总结以及介绍一些入门的学习资料&#xff0c;不过还在整理&#xff0c;应该这周内会整理好的。现在是系统的整理学…