C# 获取 Excel 文件的所有文本数据内容

 

目录

功能需求

范例运行环境

 关键代码

组件库引入

获取Excel文件的文本内容

总结


功能需求

获取上传的 EXCEL 文件的所有文本信息并存储到数据库里,可以进一步实现对文件内容资料关键字查询的全文检索。有助于我们定位相关文档,基本实现的步骤如下:

1、上传 EXCEL 文件,获取二进制数据并创建副本文件。

2、将EXCEL 副本文件通过 COM API 导出到指定的文本文件。

3、获取文本文件的内容字符串并存储到数据库中。

范例运行环境

操作系统: Windows Server 2019 DataCenter

操作系统上安装 Office Excel 2016

数据库:Microsoft SQL Server 2016

.net版本: .netFramework4.7.1 或以上

开发工具:VS2019  C#

 

关键代码

组件库引入

获取Excel文件的文本内容

getExcelContent 方法返回 string 类型内容,即表示EXCEL 文件的文本内容,说明如下表:

序号参数名类型说明
1_filenamestring文件名为全路径文件信息,方法会根据文件路径创建_path+System.Guid.NewGuid()+".txt"  的临时目标文件路径,导入EXCEL文件到 Excel Application ,使用 SAVEAS COM API 导出目标文本文件,再获文本文件内容,删除目标文本临时文件,将文件内容字符串返回。

实现代码如下:

public string getExcelContent(string _filename)
{Object Nothing=System.Reflection.Missing.Value;string _txtfile="",_path=Path.GetDirectoryName(_filename)+"\\",_ext="";if(!Directory.Exists(_path)){Directory.CreateDirectory(_path);}_txtfile=_path+System.Guid.NewGuid()+".txt";object filename=_filename;//创建一个名为ExcelApp的组件对象DateTime beforetime=DateTime.Now;Excel.Application excel=new Excel.Application();excel.DisplayAlerts=false;excel.AskToUpdateLinks=false;excel.Visible=true;DateTime aftertime=DateTime.Now;Excel.Workbook xb=excel.Workbooks.Add(filename);Worksheet worksheet = (Worksheet) excel.ActiveSheet;sheetCount=excel.Sheets.Count;worksheet.Activate();worksheet.SaveAs(@_txtfile,XlFileFormat.xlUnicodeText, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); FileEx fe=new FileEx();excel.Workbooks.Close();string rv=fe.LoadFromFile(@_txtfile,Encoding.Unicode);File.Delete(@_txtfile);excel.Quit();if(worksheet != null){System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);worksheet = null;}if(xb != null){System.Runtime.InteropServices.Marshal.ReleaseComObject(xb);xb = null;}if(excel != null){System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);excel = null;}GC.Collect();KillProcessByStartTime("EXCEL",beforetime,aftertime);return rv;
}
public string KillProcessByStartTime(string processName,DateTime beforetime,DateTime aftertime)
{Process[] ps = Process.GetProcesses();foreach (Process p in ps)  {if(p.ProcessName.ToUpper()!=processName) continue;if(p.StartTime > beforetime && p.StartTime < aftertime){try{p.Kill();}catch(Exception e){return e.Message;}}}  return "";
}

其中 KillProcessByStartTime 用于关闭未释放的EXCEL应用进程。 

总结

以上代码我们提供了一些操作 EXCEL 的API关键方法,后续我们可以将文本内容存储到数据库中,查询或下载,可以参考我的文章:

《C# 将 Word 转文本存储到数据库并进行管理》

关于 EXCEL 文件导出方法可参考如下官方文档:

https://learn.microsoft.com/zh-cn/office/vba/api/excel.worksheet.saveas?redirectedfrom=MSDN

代码这里仅供大家参考,我们可以根据需求调整输出参数类型,欢迎大家评论指教!

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

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

相关文章

零代码拖拽,轻松搞定GIS场景编辑

在三维GIS领域&#xff0c;编辑场景和处理影像数据通常是一个复杂且费时的过程&#xff0c;但现在有了山海鲸可视化&#xff0c;这一切都变得简单有趣。这款免费可视化工具为您提供了零代码拖拽式编辑的体验&#xff0c;让您无需编程知识就能轻松创建和优化GIS场景。通过直观的…

Hive多维分析函数——With cube、Grouping sets、With rollup

有些指标涉及【多维度】的聚合&#xff0c;大的汇总维度&#xff0c;小的明细维度&#xff0c;需要精细化的下钻。 grouping sets&#xff1a; 多维度组合&#xff0c;组合维度自定义&#xff1b;with cube&#xff1a; 多维度组合&#xff0c;程序自由组合&#xff0c;组合为…

大数据:数据标准化及质量管控方案

本方案是一套全面的解决方案&#xff0c;旨在为企业构建科学、规范的数据管理体系&#xff0c;确保数据的准确性、一致性、完整性、合理性、及时性和有效性&#xff0c;从而支撑业务数据的高效应用与正确决策。以下是对该方案的详细介绍&#xff1a; 一、方案概述 本数据标准…

迎峰度夏,应急备电:应急电源和燃油发电机哪个好?应急电源选购

在电网迎峰度夏的严峻挑战面前&#xff0c;铂陆帝应急电源以其卓越的性能和可靠性&#xff0c;成为了不可或缺的电力保障伙伴。与燃油发电机相比&#xff0c;铂陆帝应急电源在多个方面均展现出显著的优势。 更高效稳定&#xff0c;性能卓越 铂陆帝应急电源具备出色的性能和稳定…

GPIO子系统

1. GPIO子系统视频概述 1.1 GPIO子系统的作用 芯片内部有很多引脚&#xff0c;这些引脚可以接到GPIO模块&#xff0c;也可以接到I2C等模块。 通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚&#xff1a; 当一个引脚被复用为GPIO功能时&#xff0c;我们可以去设…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完&#xff0c;根本学不完:(&#xff0c;感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果&#xff0c;比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

GPT5发布时间预测,即将到来的GPT5

GPT-5&#xff1a;未来的展望与功能预测 随着人工智能技术的飞速发展&#xff0c;生成式预训练模型&#xff08;GPT&#xff09;已经成为自然语言处理领域的核心技术。从 GPT-1 到目前的 GPT-4&#xff0c;每一代模型都带来了显著的进步和变革。那么&#xff0c;GPT-5 的到来将…

【环境搭建问题】linux服务器安装conda并创建虚拟环境

1.检查有没有conda 首先看root文件夹下有没有anaconda或者conda 没有的话就要先下载安装conda&#xff1a; https://repo.anaconda.com/archive/index.html 在这个链接下找自己需要的。服务器一般为linux&#xff0c;所以我这里选择的是&#xff1a; 2.安装conda 下载安装…

自动控制:PID控制器参数对控制性能的影响

自动控制&#xff1a;PID控制器参数对控制性能的影响 PID控制器是工业控制领域中最常用的控制算法之一。PID控制器通过调节比例、积分(I)、微分(D)三个参数&#xff0c;使系统达到预期的控制效果。本文将详细讨论PID控制器的三个参数对控制性能的影响&#xff0c;并给出一些实…

Python脚本:使用PyPDF2给一个PDF添加上页数/总页数标签

一、实现代码 import PyPDF2 from PyPDF2 import PdfWriter from PyPDF2.generic import AnnotationBuilder# 指定输入和输出pdf pdf_path rC:\Users\ASUS\Desktop\temp\xxxx.pdf out_path rC:\Users\ASUS\Desktop\temp\xxxx2.pdf# 创建 PdfWriter 对象 writer PdfWriter()…

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案 【格式】PDF版本 【关键词】零售数字化、客户生命周期、客户画像 【核心观点】 - 在多年的行业研究积累过程中&#xff0c;将每个行业中具有典型代表性的用户维度进行了总结。本项目选择用户服务的标杆企…

视频监控管理平台LntonAIServer智能视频监控平台在工业排污检测中的应用

随着工业化的不断发展&#xff0c;环境污染问题日益严重。为了保护生态环境&#xff0c;各国政府纷纷出台相关政策&#xff0c;对工业排污进行严格监管。然而&#xff0c;传统的排污检测方法往往耗时耗力&#xff0c;且难以实现实时监控。因此&#xff0c;如何提高工业排污检测…

Graph-RAG:知识图谱与大模型的融合

在数字化的浪潮中&#xff0c;知识的累积已非线性增长&#xff0c;以指数级的速度膨胀。我们站在一个信息过载的十字路口&#xff0c;迫切需要一种能力&#xff0c;能够穿透数据的迷雾&#xff0c;捕捉知识的精髓。本文将揭示 Graph-RAG 的神秘面纱&#xff0c;这是一种突破传统…

FBMM: Making Memory Management Extensible With Filesystems——论文泛读

ATC 2024 Paper 论文阅读笔记整理 问题 CXL这样的新内存技术实现了多种内存配置&#xff0c;如分层内存、远内存和内存处理。为了支持这些新的硬件配置&#xff0c;需要对操作系统进行大量修改。例如&#xff0c;Meta的TPP内核补丁对NUMA和页面回收策略进行了更改&#xff0c…

PMP证书含金量高吗?值得考吗?

值啊&#xff0c;我考过了&#xff0c;PMP 是项目管理岗位的敲门砖&#xff0c;很多企业都写明了持有PMP 证书的优先&#xff0c;而且学完这个知识体系&#xff0c;对我的能力提升确实有帮助&#xff0c;还是值得的。 一、为什么值得 这个证书就是基础知识&#xff0c;项目管…

系统架构设计师 - 知识产权与标准化

知识产权与标准化 知识产权与标准化&#xff08;3分&#xff09;保护范围与对象 ★ ★ ★ ★法律法规 保护期限 ★ ★知识产权人确定 ★ ★ ★ ★侵权判断 ★ ★ ★ ★标准化&#xff08;了解&#xff09;★标准的分类标准的编号 大家好呀&#xff01;我是小笙&#xff0c;本章…

数据库实验:数据库安全性

一、实验目的&#xff1a; 1、掌握SQL SERVER的身份验证方式。 2、掌握SQL SERVER的权限。 3、掌握给数据库的用户和角色赋予权限和从用户和角色收回权限。 4、掌握GRANT&#xff0c;REVOKE&#xff0c;DENY的用法。 二、实验内容&#xff1a; 1、将SQL SERVER服务器的安全…

爬虫-通过几个例子来说明并发以及多线程

并发 什么是并发&#xff1f;并发&#xff0c;在操作系统中&#xff0c;是指一个时间段中有几个程序都处于已启动运行到运行完毕之间&#xff0c;且这几个程序都是在同一个处理机上运行&#xff0c;但任一个时刻点上只有一个程序在处理机上运行。 嗯&#xff0c;字认识&#…

滞回比较器工作原理,应用,TINA仿真

滞回比较器 滞回比较器的主要应用是增加滞回控制&#xff0c;让其对微小的变化不那么敏感&#xff0c;增强抗干扰能力&#xff0c;避免由噪声引起的不稳定状态&#xff0c;通常用于噪声环境下的阈值检测以及信号调理。根据不同需求&#xff0c;滞回比较器还可以设计成开漏极输出…

Redis的使用场景——热点数据缓存

热点数据缓存 Redis的使用场景——热点数据的缓存 1.1 什么是缓存 为了把一些经常访问的数据&#xff0c;放入缓存中以减少对数据库的访问效率&#xff0c;从而减少数据库的压力&#xff0c;提高程序的性能。【在内存中存储】 1.2 缓存的原理 查询缓存中是否存在对应的数据如…