c# 读取上传excel转换为DataTable

news/2025/1/15 16:46:05/文章来源:https://www.cnblogs.com/duixue/p/18403883
var files = Request.Files;if (files == null || files.Count == 0)
{return Json(new { code = 1, msg = "未获取到文件" });
}var file = files[0];var dt = ReadExcelToDataTable(file.InputStream);return Json(new { code = 1, msg = "已读取Excel到DataTable" });
        static DataTable ReadExcelToDataTable(Stream stream){DataTable dataTable = new DataTable();// 读取Excel文件XSSFWorkbook workbook = new XSSFWorkbook(stream);ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表// 获取列数int columnsCount = sheet.GetRow(0).LastCellNum;// 用于存储列名和对应的重复次数Dictionary<string, int> columnNameCounts = new Dictionary<string, int>();// 创建表头,处理重复的列名for (int i = 0; i < columnsCount; i++){object obj = sheet.GetRow(0).GetCell(i);if (obj == null || obj.ToString() == string.Empty){dataTable.Columns.Add(new DataColumn("Columns" + i.ToString()));}else{//string columnName = sheet.GetRow(0).GetCell(i).StringCellValue;string columnName = obj.ToString();string uniqueColumnName = GetUniqueColumnName(columnName, columnNameCounts);dataTable.Columns.Add(uniqueColumnName);}}// 填充数据for (int i = 1; i <= sheet.LastRowNum; i++){IRow row = sheet.GetRow(i);DataRow dataRow = dataTable.NewRow();for (int j = 0; j < columnsCount; j++){if (row.GetCell(j) != null){dataRow[j] = row.GetCell(j).ToString();}}dataTable.Rows.Add(dataRow);}return dataTable;}static string GetUniqueColumnName(string columnName, Dictionary<string, int> columnNameCounts){if (!columnNameCounts.ContainsKey(columnName)){columnNameCounts[columnName] = 1;return columnName;}else{int count = columnNameCounts[columnName];columnNameCounts[columnName] = count + 1;return $"{columnName}{count + 1}";}}

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

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

相关文章

明厨亮灶视频监控分析系统

明厨亮灶视频监控分析系统依据“大数据技术明厨亮灶”在基本建设形式上,能够对后厨房的主要地区开展集中统一的视频监控。明厨亮灶视频监控分析系统能够随时随地查看食堂后厨房的监控界面。在厨房工作人员的行为方面,可以识别厨师帽厨师工作服查验,不戴口罩识别,餐厅厨房抽…

未穿厨师服厨师帽穿戴识别检测系统

未穿厨师服厨师帽穿戴识别检测系统适用厨房餐厅的全部关键位置。依据人工智能技术和图像识别优化算法,全天候实时监控餐厅厨房和厨师的整个操作过程。它能够识别厨房内有没有老鼠,厨师不穿厨师服,不佩戴口罩,不戴厨师帽,不戴手套,抽烟,玩手机等,一旦检测识别到上述情况…

Javaweb-JDBC快速如门

package JDBC; import java.sql.*; public class JDBCDemo { public static void main(String[] args) throws Exception { //1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //2.获取连接 String url = "jdbc:mysql://127.0.0.1:3306/bookmanagement&…

秸秆禁烧识别系统 烟雾智能识别检测系统

秸秆禁烧识别系统烟雾智能识别检测系统具备全天、及时发现问题、管控高效率、有益于证据收集的优势,利用现场已经存在的监控摄像头和秸秆禁烧识别系统烟雾智能识别检测系统,在通信基站塔顶端监控摄像头的帮助下,对图像预置开展实时分析查验,能够积极主动识别户外违法焚烧处…

工地反光衣识别检测系统

工地反光衣识别检测系统运用智能视频分析和神经网络算法,进行工程施工区工作员是不是穿反光衣开展实时分析识别、追踪和警报,马上依据短视频实时分析和预警提醒,不穿反光衣危险行为及时预警提醒,警报截屏和视频储存到数据库系统系统生成表格,与此同时向有关人员消息推送报…

高空作业安全带佩戴识别检测系统

高空作业安全带佩戴识别检测系统实时检测高空作业工作人员的安全防范状况。当检测到高空作业没有按照要求佩戴安全带时,高空作业安全带佩戴识别检测系统马上警报。并且提醒有关工作员妥善处置并劝说。与此同时,将警报截屏和视频保存到数据库系统系统中,生成表格并发给有关人…

明厨亮灶视频监控分析抓拍报警系统

明厨亮灶视频监控分析抓拍报警系统配合现场的监控摄像头,自动识别餐厅厨房工作员的厨师服厨师帽口罩等是不是配戴,是不是有耗子/猫/狗等动物侵入,或者陌生人侵入后厨等;明厨亮灶视频监控分析抓拍报警系统可解决厨房卫生监控盲点大、管控艰难、环境卫生操纵欠缺等难题,使传…

.NET Core搭配Vue开源弹幕效果,实现一个评论小项目。好玩!

ZY树洞 前言 ZY树洞是一个基于.NET Core开发的简单的评论系统,主要用于大家分享自己心中的感悟、经验、心得、想法等。 好了,不卖关子了,这个项目其实是上班无聊的时候写的,为什么要写这个项目呢?因为我单纯的想吐槽一下工作中的不满而已。 项目介绍 项目很简单,主要功能…

nginx一个端口服务多个网页(带cdn)

这篇博客介绍了如何使用Cloudflare和Nginx,在同一服务器的443端口上托管多个服务。通过为不同子域名配置Nginx反向代理,将请求路由到不同的本地服务,并使用Cloudflare的SSL证书和CDN加速访问。缘起 大学的时候买了一个阿里云的小鸡,一直续费在现在,上面跑了不少服务(tril…

dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件

本文记录我读 WPF 源代码的笔记,在 WPF 底层是如何从 Win32 的消息循环获取到的 WM_POINTER 消息处理转换作为 Touch 事件的参数由于 WPF 触摸部分会兼顾开启 Pointer 消息和不开启 Pointer 消息,为了方便大家理解,本文分为两个部分。第一个部分是脱离 WPF 框架,聊聊一个 W…

Cisco ACI Simulator 6.0(7e)M 发布下载,新增功能简介

Cisco ACI Simulator 6.0(7e)M 发布下载,新增功能简介Cisco ACI Simulator 6.0(7e)M - ACI 模拟器 Application Centric Infrastructure (ACI) Simulator Software 请访问原文链接:https://sysin.org/blog/cisco-acisim-6/,查看最新版。原创作品,转载请保留出处。 作者主页…

51nod 1274 最长递增路径

因为边权递增,按最小生成树的顺序 dp,设状态 \(dp[i]\) 为 \(i\) 点的最长路径长度,但是需要单调递增,所以考虑可以同时更新(先将原dp数组储存下来,再用新数组的值更新原 dp 数组),答案为 \(max(dp[i])\)。 #include<bits/stdc++.h> using namespace std; #defin…