我发现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();}}
}

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

  1. C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

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

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

  3. STM32 内部Flash读写 程序源码 [已验证]

    目录 STM32 内部Flash带缓存读写 程序源码 0 Macro 1.Flash_Erase 2. Flash_Read_Byte 3.Flash_Write_NoBuffer 4.Flash_W ...

  4. 分享Delphi处理EXCEL源码

    分享Delphi处理EXCEL源码,源码如下: (*************************************************************************** ...

  5. Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]

    摘要:本节主要来讲解Android10.0 logd.logcat读写日志源码内容 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Andro ...

  6. 机器视觉,halcon项目源码,视觉检测和视觉测量源码

    机器视觉,halcon项目源码,视觉检测和视觉测量源码. 提供源码和图片调试 支持本地相机和实际相机 网络通信 流程设计 框架源码 用户管理 支持产品切换功能

  7. 酷享cms网站企业授权系统源码 带盗版检测

    介绍: 酷享cms企业授权系统源码带盗版检测 1.网站基本管理.系统设置.公告设置.接口设置.价格设置.下载设置. 2.文章管理.广告轮图管理.添加授权.授权列表.授权日志. 3.支付订单.充值订单. ...

  8. 机器视觉框架源码、视觉检测、AOI视觉检测、机械手定位、点胶机、插件机、激光切割机、视觉螺丝机

    机器视觉框架源码.视觉检测.AOI视觉检测.机械手定位.点胶机.插件机.激光切割机.视觉螺丝机.视觉贴合机.激光焊接机.视觉裁板机--,C#联合Halcon混合编程源码,插件式开发 ,带手眼标定,相机 ...

  9. 直播网站源码直播平台软件开发iOS动手做一个直播(原理篇)

    直播网站源码直播平台软件开发iOS动手做一个直播(原理篇) 上篇文章主要给出了代码,但是并没有详细说明直播相关的知识,这篇文章就说一下直播的相关理论知识.附上直播代码篇地址. ###推流 腾讯直播平台 ...

最新文章

  1. 查看自己的Android studio 版本
  2. 2020年港澳台电视直播软件_中山大学2020年港澳台侨联考各专业录取分数线
  3. 如何增加儿童产品中的趣味性?
  4. 《统计会犯错——如何避免数据分析中的统计陷阱》—第2章置信区间的优势
  5. 在sqlyog进行数据库的备份_狂神说MySQL07:权限及如何设计数据库
  6. 深入讲解防火墙的概念原理与实现
  7. miRNA数据库篇——HMDD:miRNA相关疾病数据库
  8. lufylegend引擎制作接水果小游戏
  9. To C、To G、To B,数字化转型
  10. 小米手机已连接但无法访问互联网解决办法
  11. java datasource 详解_Spring的datasource配置详解
  12. Ubuntu18.04安装搜狗输入法无法使用
  13. 青橙N1云OS系统刷机
  14. Sending the email to the following server failed.IOException while sending message问题解决
  15. 鸿蒙os价格表,第一款搭载鸿蒙OS产品:配置价格都超美
  16. win快捷键_终于找到了!10个Win+组合快捷键,让你的工作效率提升10倍
  17. IT行业里的热门技术和项目分享
  18. arduino声音传感器与二极管_如何将声音传感器与Arduino连接 并实现继电器控制项目...
  19. 江南科友 hac linux shell,运维安全审计系统(HAC 1000E、HAC 1000P)
  20. 雪峰磁针石博客]渗透测试简介2入侵工具

热门文章

  1. 花生壳和神卓互联内网穿透那个好用?
  2. STM32低功耗模式解读
  3. Java的学习路线(非常完整)
  4. Java设计模式:农场不同季节生成不同蔬菜水果的一种抽象工厂模式
  5. python 滑动验证码_python:TX滑动验证码识别方案一
  6. Hive中删除表数据的几种方式
  7. 计算机网络连接图标,网络连接图标显示不正常
  8. 02 ,开店认证流程 :
  9. c语言中argc的作用,C语言中 int main(int argc,char *argv[])的两个参数详解
  10. 您还能想起小学同学的名字吗?