c# 将excel导入 sqlite
nuget 须要加载
EPPlus.Core
ExcelDataReader
ExcelDataReader.DataSet
//需要引用的扩展
using ExcelDataReader;
using ExcelPackage = OfficeOpenXml.ExcelPackage;
public static void CreateZhouPianChaTable(){string tbname = "zhou_pian_cha1";//判断表是否存在bool isExist = TableIsExist(tbname);if (!isExist){SQLiteConnection db = ConnectToDatabase(SqLite1);_sql = $"create table {tbname} ( ID integer NOT NULL PRIMARY KEY AUTOINCREMENT,size_min real(255),size_max real(255),tolerance_class Text(255),ES real(255),El real(255) )";_command = new SQLiteCommand(_sql, db);_command.ExecuteNonQuery();string excelFilePath = @"D:\c#\轴的极限偏差.xlsx";//另外一种将excel 读取到 datatable 的方式// using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath))) {// ExcelWorksheet worksheet = package.Workbook.Worksheets[1];// // // 读取数据到 DataTable 中// DataTable dataTable = new DataTable(worksheet.Name);// foreach (var firstRowCell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column]) {// dataTable.Columns.Add(firstRowCell.Text);// }// for (int rowNumber = 2; rowNumber <= worksheet.Dimension.End.Row; rowNumber++) {// var row = worksheet.Cells[rowNumber, 1, rowNumber, worksheet.Dimension.End.Column];// DataRow dr = dataTable.Rows.Add();// foreach (var cell in row) {// dr[cell.Start.Column - 1] = cell.Text;// }// }// // }var data = ReadExcelToDataSet(excelFilePath);DataTable dataTable = data.Tables[0];string addsql = $"INSERT INTO {tbname} (ID, size_min, size_max,tolerance_class,ES,El) VALUES (@Column1, @Column2, @Column3,@Column4,@Column5,@Column6)";// 插入数据using (var bulkInsertCommand = new SQLiteCommand(addsql, db)){bulkInsertCommand.Parameters.AddWithValue("@Column1", dataTable.Rows[0][0]);bulkInsertCommand.Parameters.AddWithValue("@Column2", dataTable.Rows[0][1]);bulkInsertCommand.Parameters.AddWithValue("@Column3", dataTable.Rows[0][2]);bulkInsertCommand.Parameters.AddWithValue("@Column4", dataTable.Rows[0][3]);bulkInsertCommand.Parameters.AddWithValue("@Column5", dataTable.Rows[0][4]);bulkInsertCommand.Parameters.AddWithValue("@Column6", dataTable.Rows[0][5]);for (int i = 1; i < dataTable.Rows.Count; i++){bulkInsertCommand.Parameters["@Column1"].Value = dataTable.Rows[i][0];bulkInsertCommand.Parameters["@Column2"].Value = dataTable.Rows[i][1];bulkInsertCommand.Parameters["@Column3"].Value = dataTable.Rows[i][2];bulkInsertCommand.Parameters["@Column4"].Value = dataTable.Rows[i][3];bulkInsertCommand.Parameters["@Column5"].Value = dataTable.Rows[i][4];bulkInsertCommand.Parameters["@Column6"].Value = dataTable.Rows[i][5];bulkInsertCommand.ExecuteNonQuery();}}db.Close();}}/// <summary>/// 判断数据表是否存在/// </summary>/// <param name="tableName"></param>/// <returns></returns>public static bool TableIsExist(String tableName){try{SQLiteConnection db = ConnectToDatabase(SqLite1);using (SQLiteCommand cmd = db.CreateCommand()){cmd.CommandText = "SELECT count(*) from sqlite_master where type='table' and name='" + tableName +"'; ";if (Convert.ToInt32(cmd.ExecuteScalar()) == 0) // 不存在此数据表{return false;}else //存在此数据表,直接加数据{return true;}}}catch{// ignored}return false;}//创建一个连接到指定数据库public static SQLiteConnection ConnectToDatabase(string dbName){_mDbConnection = new SQLiteConnection($"Data Source={dbName}.db;Version=3;"); //没有数据库则自动创建_mDbConnection.Open();return _mDbConnection;}//读取excelpublic static DataSet ReadExcelToDataSet(string fileNmaePath){FileStream stream = null;IExcelDataReader excelReader = null;DataSet dataSet = null;try{//stream = File.Open(fileNmaePath, FileMode.Open, FileAccess.Read);stream = new FileStream(fileNmaePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);}catch{MessageBox.Show("无法读取文件.");return null;}string extension = Path.GetExtension(fileNmaePath);if (extension.ToUpper() == ".XLS"){excelReader = ExcelReaderFactory.CreateBinaryReader(stream);}else if (extension.ToUpper() == ".XLSX"){excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);}else{MessageBox.Show("格式错误.");return null;}dataSet = excelReader.AsDataSet();//第一行当作数据读取excelReader.Close();return dataSet;}相关文章:
c# 将excel导入 sqlite
nuget 须要加载 EPPlus.Core ExcelDataReader ExcelDataReader.DataSet //需要引用的扩展 using ExcelDataReader; using ExcelPackage OfficeOpenXml.ExcelPackage; public static void CreateZhouPianChaTable(){string tbname "zhou_pian_cha1";//判断表是否存…...
KafkaConsumer 消费逻辑
版本:kafka-clients-2.0.1.jar 之前想写个插件修改 kafkaConsumer 消费者的逻辑,根据 header 过滤一些消息。于是需要了解一下 kafkaConsumer 具体是如何拉取消费消息的,确认在消费之前过滤掉消息是否会有影响。 下面是相关的源码࿰…...
scss 实用教程
变量 $ 定义变量 $link-color: blue;变量名可以与css中的属性名和选择器名称相同 使用变量 a {color: $link_color; }$highlight-border: 1px solid $link_color;中划线和下划线相互兼容,即中划线声明的变量可以使用下划线的方式引用,反之亦然。 $li…...
NO.304 二维区域和检索 - 矩阵不可变
题目 给定一个二维矩阵 matrix,以下类型的多个请求: 计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。 实现 NumMatrix 类: NumMatrix(int[][] matrix) 给定整数矩阵 …...
牛客---简单密码python
现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2&#x…...
devops完整搭建教程(gitlab、jenkins、harbor、docker)
devops完整搭建教程(gitlab、jenkins、harbor、docker) 文章目录 devops完整搭建教程(gitlab、jenkins、harbor、docker)1.简介:2.工作流程:3.优缺点4.环境说明5.部署前准备工作5.1.所有主机永久关闭防火墙…...
页面上时间显示为数字 后端返回给前端 response java系统
有时候,在一个系统里,会看到,有的页面时间显示正常,有的页面时间显示成数字。像这样: "createTime": 1698706491000 这是因为出参没有做转换,直接将java.util.Date类型的数据返回给前端了。 返…...
idea怎么配置tomcat
要在IntelliJ IDEA中配置Tomcat,请按照以下步骤操作: 打开IntelliJ IDEA,点击File -> Settings(或者使用快捷键CtrlAltS)。 在设置窗口左侧导航栏中,选择Build, Execution, Deployment -> Applicati…...
GoLong的学习之路(二十三)进阶,语法之并发(go最重要的特点)(锁,sync包,原子操作)
这章是我并发系列中最后的一章。这章主要讲的是锁。但是也会讲上一章channl遗留下的一些没有讲到的内容。select关键字的用法,以及错误的一些channl用法。废话不多说。。。 文章目录 select多路复用通道错误示例并发安全和锁问题描述互斥锁读写互斥锁 syncsync.Wait…...
asp.net core 生命周期
在ASP.NET Core中,有三个重要的生命周期阶段: 请求生命周期(Request Lifecycle):请求生命周期从接收到客户端的HTTP请求开始,到响应结果发送给客户端结束。在请求生命周期中,ASP.NET Core会创建…...
Leetcode刷题详解—— 目标和
1. 题目链接:494. 目标和 2. 题目描述: 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可…...
学习c#的第六天
目录 C# 判断 if 语句 嵌套 if 语句 switch 语句 嵌套 switch 语句 ? : 运算符 C# 循环 循环类型 while 循环 for/foreach 循环 do...while 循环 嵌套循环 循环控制语句 break 语句 continue 语句 无限循环 C# 判断 if 语句 在C#中,if语句用于根…...
第七章 :Spring Boot web开发常用注解(二)
第七章 :Spring Boot web开发常用注解(二) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个章节,可以作为web开发工程师注解参考手册,SpringBoot常用注解大全,一目了然!。本…...
IOC - Google Guice
Google Guice是一个轻量级的依赖注入框架,专注于依赖注入和IoC,适用于中小型应用。 Spring Framework是一个全面的企业级框架,提供了广泛的功能,适用于大型企业应用。 是吧!IOC 容器不止Spring,还有Google Guice,来体…...
国际阿里云:Linux实例负载高问题排查和异常处理!!!
问题描述 在您使用ECS实例过程中,可能会遇到实例系统负载较高的情况,负载过高,可能会引发一系列异常问题,简单说您如下: CPU使用率或负载过高:一般来说,当CPU使用率≥80%时,定义为C…...
【数据结构】二叉树的遍历递归算法详解
二叉树的遍历 💫二叉树的结点结构定义💫创建一个二叉树结点💫在主函数中手动创建一颗二叉树💫二叉树的前序遍历💫调用栈递归——实现前序遍历💫递归实现中序和后序遍历 💫二叉树的结点结构定义 …...
百度王颖:百度文库以AI创作能力突破语言边界,促进思想碰撞和文化融通
1月9日,2023年世界互联网大会乌镇峰会“网络传播与文明交流互鉴论坛”召开。百度副总裁、互娱和垂类平台负责人王颖出席并发表“以技术搭建跨文化交流桥梁”主题演讲。她表示,在大模型的加持下,百度各个产品都在重构,通过技术助力…...
人工智能基础_机器学习023_理解套索回归_认识L1正则---人工智能工作笔记0063
然后上一节我们说了L1,L2正则是为了提高,模型的泛化能力, 提高泛化能力,实际上就是把模型的公式的w,权重值,变小对吧. 然后我们这里首先看第一个L1正则,是怎么做到把w权重变小的 可以看到最上面是线性回归的损失函数,然后 L1可以看到,这个正则,就是在损失函数的基础上给损失…...
Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记
Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画的3D人脸模型。论文方法:论文结果:论文意义: 论文目标:提出一个端到端的框架,可以从非受控的图片中学习高质量、可动画…...
Lenovo联想小新Air-14笔记本2021款AMD锐龙ALC版(82LM)原装出厂Win10镜像和Windows11预装OEM系统
下载链接:https://pan.baidu.com/s/1akLkXM2HIg3eO76jqM-LVA?pwdxvo6 提取码:xvo6 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:…...
HarmonyOS在语文教学中的应用-8. 古诗配乐朗读《静夜思》
8. 古诗配乐朗读(对应:「8」 静夜思) 功能介绍: 针对《静夜思》开发的古诗鉴赏应用。界面采用水墨风格,背景有一轮明月缓缓移动。学生点击诗句,会有标准的古筝配乐和朗诵播放。同时提供“注释”按钮,点击后解释“疑是地上霜”等诗句的含义,营造宁静的意境,帮助学生背…...
Swig实战指南:Python3与C/C++混合编程的CMake最佳实践(2024版)
1. 为什么需要Swig与CMake组合? 在性能敏感的场景中,我们常常需要将C/C的高效计算能力与Python的易用性相结合。但直接使用Python的C API进行混合编程就像用螺丝刀切菜——既费力又容易伤到手。这时Swig就像个智能厨房机器人,它能自动生成两种…...
如何通过3个关键步骤将HDRI全景图转换为立方体贴图:从概念到实践
如何通过3个关键步骤将HDRI全景图转换为立方体贴图:从概念到实践 【免费下载链接】HDRI-to-CubeMap Image converter from spherical map to cubemap 项目地址: https://gitcode.com/gh_mirrors/hd/HDRI-to-CubeMap HDRI-to-CubeMap是一个基于浏览器的专业工…...
2026年黑龙江市场,这些专业装修公司值得你深入了解!
在黑龙江装修市场,选择一家靠谱的装修公司至关重要。下面为大家深入分析几家值得关注的装修公司,其中为尚奢享凭借其独特优势在市场中脱颖而出。为尚奢享:施工与服务双优典范为尚奢享即哈尔滨为尚装饰设计有限公司,成立十年来&…...
THE LEATHER ARCHIVE 快速上手指南:3步生成你的第一张AI时尚作品
THE LEATHER ARCHIVE 快速上手指南:3步生成你的第一张AI时尚作品 1. 项目简介 THE LEATHER ARCHIVE 是一款专为时尚设计师和创意人士打造的高端AI穿搭生成工具。它不同于传统的AI绘画工具,采用了独特的非对称剪贴报布局设计,让整个创作过程…...
MySQL 查询优化中索引的真正作用
MySQL查询优化中索引的真正作用 在数据库性能优化中,索引是提升查询效率的关键工具。许多开发者虽然知道索引的重要性,但对其真正的作用和原理理解不够深入。本文将深入探讨MySQL索引的核心作用,帮助读者掌握如何高效利用索引优化查询性能。…...
从零入门性能测试:理论+JMETER实操,看完就能上手铝
一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...
Xmake进阶指南---打造高效Qt开发工作流
1. 为什么选择Xmake构建Qt项目? 第一次接触Qt开发的朋友,往往会被官方推荐的qmake或CMake构建工具劝退。我至今记得五年前接手一个遗留Qt项目时,面对.pro文件中晦涩的语法和复杂的平台条件判断,整整花了两天才让项目正常编译。直到…...
一个简洁易用的 Delphi JSON 封装库,基于 System.JSON`单元封装,提供更直观的 API文
一、前言:什么是 OFA VQA 模型? OFA(One For All)是字节跳动提出的多模态预训练模型,支持视觉问答、图像描述、图像编辑等多种任务,其中视觉问答(VQA)是最常用的功能之一——输入一张…...
小白也能玩转AI绘画:Anything V5镜像保姆级部署教程
小白也能玩转AI绘画:Anything V5镜像保姆级部署教程 1. 前言:为什么选择Anything V5? 如果你对AI绘画感兴趣,但又觉得技术门槛太高,那么Anything V5绝对是你的最佳选择。这个基于Stable Diffusion的二次元图像生成模…...
