C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件。 ”的解决


我发现excel最新的扩展名.xlsx不用打开文件在计算机里就可以直接搜里面的内容。但老的.xls就搜不到。


1.C#写的操作EXCEL应用 提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件。 之前还正常,换个电脑就报错。

先手工打开Excel,会提示“受保护的视图”,不能编辑。点启用编辑就行了。再打开软件,正常了。


2.找不到引用microsoft.office.core

在项目引用中右击选择添加引用,选择COM里面选择Microft Office 12.0 object Library和Microft Excel 12.0 object Library分别点确定即可!同样如果要引用World选Microft World 12.0 object Library!  2003/2007共通处理方式 分别为11或12版本  添加.net中Microsoft.Office.Interop.excel;  添加.net中Office 


3.源码示例

using System;
using System.Reflection;
using System.IO;
using Microsoft.Office.Interop.Excel;namespace Excel
{class Excel{public static int startRow =5;public static string jzmc = "";public static string id = "";public static Double count = 0;public static Array zw;public static bool WriteXls(string filename, System.Collections.ArrayList rowData, int sheetNum){//启动Excel应用程序Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();//  _Workbook book = xls.Workbooks.Add(Missing.Value); //创建一张表,一张表可以包含多个sheet//如果表已经存在,可以用下面的命令打开_Workbook book = xls.Workbooks.Open(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);_Worksheet sheet;//定义sheet变量xls.Visible = false;//设置Excel后台运行xls.DisplayAlerts = false;//设置不显示确认修改提示//创建并写入数据到sheettry{sheet = (_Worksheet)book.Worksheets.get_Item(sheetNum);//获得第i个sheet,准备写入}catch (Exception ex)//不存在就增加一个sheet{sheet = (_Worksheet)book.Worksheets.Add(Missing.Value, book.Worksheets[book.Sheets.Count], 1, Missing.Value);}//sheet.Name = "第" + i.ToString() + "页";//设置当前sheet的Namesheet.get_Range("C3", Type.Missing).Cells.Value2=jzmc;sheet.get_Range("G3", Type.Missing).Cells.Value2=id;sheet.get_Range("I3", Type.Missing).Cells.Value2=count;for (int offset = 0; offset < 10; offset++){string str = rowData[offset].ToString();sheet.Cells[startRow, offset + 1] = rowData[offset].ToString(); }startRow++;//行位置向前加    //将表另存为//  book.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//如果表已经存在,直接用下面的命令保存即可book.Save();book.Close(false, Missing.Value, Missing.Value);//关闭打开的表xls.Quit();//Excel程序退出//sheet,book,xls设置为null,防止内存泄露sheet = null;book = null;xls = null;GC.Collect();//系统回收资源return true;}public static bool CreateFile(string filename){try{//启动Excel应用程序Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();_Workbook book = xls.Workbooks.Add(Missing.Value); //创建一张表,一张表可以包含多个sheetxls.DisplayAlerts = false;//设置不显示确认修改提示//将表另存为book.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);book.Close(false, Missing.Value, Missing.Value);//关闭打开的表xls.Quit();//Excel程序退出//sheet,book,xls设置为null,防止内存泄露xls = null;GC.Collect();//系统回收资源}catch (Exception ex)//不存在就退出{return false;}return true;}public static Array ReadXls(string filename, int index)//读取第index个sheet的数据{//启动Excel应用程序Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();//打开filename表_Workbook book = xls.Workbooks.Open(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);try{_Worksheet sheet;//定义sheet变量xls.Visible = false;//设置Excel后台运行xls.DisplayAlerts = false;//设置不显示确认修改提示              sheet = (_Worksheet)book.Worksheets.get_Item(index);//获得第index个sheet,准备读取Console.WriteLine(sheet.Name);int row = sheet.UsedRange.Rows.Count;//获取不为空的行数int col = sheet.UsedRange.Columns.Count;//获取不为空的列数jzmc = sheet.get_Range("C3", Type.Missing).Cells.Value2;id = sheet.get_Range("G3", Type.Missing).Cells.Value2;count = sheet.get_Range("I3", Type.Missing).Cells.Value2;zw = (Array)sheet.get_Range("B5", "B" + row).Cells.Value2;  //获得区域数据赋值给Array数组,方便读取Array value = (Array)sheet.get_Range("A5", "F" + row).Cells.Value2;  //获得区域数据赋值给Array数组,方便读取// Array value = (Array)sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[row, col]).Cells.Value2;book.Save();//保存book.Close(false, Missing.Value, Missing.Value);//关闭打开的表xls.Quit();//Excel程序退出//sheet,book,xls设置为null,防止内存泄露sheet = null;book = null;xls = null;GC.Collect();//系统回收资源return value;}catch (Exception ex)//不存在就退出{book.Close(false, Missing.Value, Missing.Value);//关闭打开的表xls.Quit();//Excel程序退出//sheet,book,xls设置为null,防止内存泄露book = null;xls = null;GC.Collect();//系统回收资源return null;}}public static void Copy(string path, string path2){//string path = @"c:/temp/MyTest.txt";// string path2 = path + "temp";try{// Create the file and clean up handles.// using (FileStream fs = File.Create(path)) { }// Ensure that the target does not exist.File.Delete(path2);// Copy the file.//  File.Copy(path, path2);//  Console.WriteLine("{0} copied to {1}", path, path2);// Try to copy the same file again, which should succeed.File.Copy(path, path2, true);               //  Console.WriteLine("The second Copy operation succeeded, which was expected.");}catch{// Console.WriteLine("Double copy is not allowed, which was not expected.");}}public static void Test(){string Current;Current = Directory.GetCurrentDirectory();//获取当前根目录Array Data = ReadXls(Current + "\\JMO-PCBA-019.xls", 1);//读取test.xls的第一个sheet表foreach (string temp in Data)Console.WriteLine(temp);Console.ReadKey();}}
}


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

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • VC++ UDP转TCP互发数据 UDP为服务端 TCP为客户端 可修改IP和端口最小化 2TCP/UDP中转
  • 仿养生网 帝国CMS 更新后域名栏目链接一直没变 解决方法:在后台地图--模板标签替换里直接全部替换
  • 域名解密 商家联盟会员消费管理系统_连锁店会员积分系统 带微信(域名加密的) aqinxiaodian
  • Mac下一键安装Apache/Nginx+MySQL+PHP开发环境 及各版本测试PHP探针
  • C#源码 批量结束进程 让系统加速 参数配置保存
  • android蓝牙4.0BLE及2.0 2.1 apk 串口助手带16个自定义按键和自定义指令 字符接收 十六进制或字符发送
  • eclipse项目转为as项目中文乱码、导入jni项目问题 NDK安装
  • javaEE 传递到servlet里的 session 与jsp里的不匹配不一致? spring MVC 未解决
  • asp在本地正常,在服务器上报无法识别的属性“targetFramework”,我改了版本显示文件不存在404,从微软官网下载.net包就正常了
  • Eclipse转Android studio运行时等问题 编码乱码 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?
  • 在C# WebBrowser控件插入JS代码并执行,可以修改js就能对html执行任意操作
  • android第二次点击应用,就报App isn't installed 解决方法
  • 爬虫采集 通用正则表达式
  • 织梦文档标题重复时不允许发文章
  • 织梦学习 变量的运用 添加新变量 删除新变量 添加上传视频mp4
  • CocosCreator+VS2017提示“要求的 VS 版本:[2013, 2015, 2017]”解决办法 无法找到 v140_xp 的生成工具
  • 助学贷款系统导入预申请时问题解决办法汇总
  • FTP连接阿里云不能获得列表目录等功能,能连接,21端口也打开了。原因FTP是双向的,阿里云入出方向安全组规则必须添加本地随机端口
  • 模仿抖音app源码 但可以离线看视频,批量上传视频,调进度,右边滑动调节声音,左边翻页,自动同步更新远程上传视频,自动升级,记录位置
  • 本地与服务器文件同步问题的设计逻辑
  • win10生成UWP软件打包 安装UWP软件
  • VS2010 MFC CString转为char *或char[] 网上都不靠谱,自己写了一个牛的。
  • 答题源码yodati_v1.0.1的一些问题
  • js匹配url地址中参数 支持中文
  • JS页面滚动动态加载数据,页面下拉自动加载内容
  • 被嵌套到iframe里面强制跳转方法,防止强制跳转方法
  • 有源码但后台密码忘记找回通用方法--微信猜骰子大小附带充值接口 html5游戏网站
  • 创业或业余赚大钱无风险:从支付宝赚赏钱开始,gitchat写文章或写课程1篇文章几千元
  • 百度经验很难通过且不能改标题 的方法:被谢绝无修改按键重新提交 ,还能自由改标题
  • 百度文库搜索0下载券文档的方法:删除VIP这段代码就行。
  • android studio导入以module形式的源码 有人源码USR-BLE100蓝牙低功耗调试助手USR_ble_sound No resource found that matches
  • 学霸是怎样炼成的?学了那么多还一无是处?如何克服学习阻力?一件枯燥讨厌的事但必须要做?内心强大的主观改造 自我加速(学以致用)与环境加速(学习型组织)
  • 2019规划:放下所有,轻松上阵,大胆尝试,勇于实践,经商赚钱,考证提高,随时煅炼
  • 挑战昨天:如果每天都能打破昨天的记录,那是不是能充分挖掘潜力。
  • 小孩终生教育工程(人生管理):有些东西比努力比钱更重要
  • 宝塔面板 设置反向代理访问使jsp与php共用一个环境共用一个80端口
  • 宝塔面板的nginx伪静态rewrite设置、反向代理设置
  • Eclipse中使用Tomcat加载项目在浏览器中访问的时候JS和CSS等静态文件无法加载:根路径中多了个项目名 OK
  • JSP 中大于号、小于号、单引号、双引号、小括号%、%大括号 的转义
  • android:process属性太坑了。无法访问静态变量,无法回调函数,无法使用Handler。去掉就行。
  • 怎样才能过上好日子?为什么勤而不富?富豪是怎样炼成的?如何做个好富人?个人财富的性质和原因的研究
  • 读书程序标准化建模--高效阅读学习,越学越有劲/趣
  • 不翻qiang搞定Android Studio Google库加载不下来的问题 打包生成apk android studio 3.2打灰机程序源码带详细注释
  • 夜神模拟器已经启动但断线(虚拟列表中没有设备),用CMD命令重新连接nox_adb.exe connect 127.0.0.1:62001
  • printf及String.format格式化测试
  • android java 经典字符模式通信接收处理,标准modbus通讯协议接收处理提取数据
  • 10055自动进刀水钻机android蓝牙2.0SSP项目源码结构使用说明【版本更新、自动连接、控件批量处理、接收解析】
  • Android Studio导入项目时常见问题的解决汇总,Eclipse项目转为Android Studio项目步骤报错万能解决方法汇总
  • Widget.Material.Light.ProgressBar.Horizontal (10302b8) is not a Drawable (color or path)错误解决
  • 解决java中文乱码,编码识别测试,汇总