当前位置: 代码网 > it编程>编程语言>C# > C#获取Excel文件所有文本数据内容的示例代码

C#获取Excel文件所有文本数据内容的示例代码

2024年09月07日 C# 我要评论
功能需求获取上传的 excel 文件的所有文本信息并存储到数据库里,可以进一步实现对文件内容资料关键字查询的全文检索。有助于我们定位相关文档,基本实现的步骤如下:1、上传 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 文件导出方法可参考如下官方文档:

worksheet.saveas 方法 (excel) | microsoft learn

到此这篇关于c#获取excel文件所有文本数据内容的示例代码的文章就介绍到这了,更多相关c#获取excel数据内容内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com