Office程序出错的几种原因与解决方法
以下的几种情况都是最近发生在公司电脑的问题,困扰着很多的同事,之前一直都是直接重新安装Office程序,虽然能够解决问题,但是费时又费力,特在这里分享一下具体的情况与解决方法
问题一:文档提示损坏,转换出错
分析:这类出错文档一般都是发生格式为".rtf"or"doc"之类的WORD文档,Excel程序也会出现类似的问题,我们知道,如果使用Office2007版以下的版本去打开".docx",".xlsx"这类文档,程序需要安装一个转换工具,而这种错误就是发生在这个转换的过程无法进行下去,所以导致文档出错。
解决方法:使用系统的WordPad(它是微软系统的一个文本编辑器,大家有兴趣可以搜索一下相关资料)去修复出现此问题的文档,操作方法如下:
1)、从开始菜单-所有程序-附件下找到WordPad,如下:
2)、通过WordPad文件菜单下选择"打开",在出现的窗口当中选择出现问题的文档,重新保存一份后缀为".docx"的文档。
要点:这就有点像有时我们不知道一个文件应该用什么程序去打开它,比如Flash文件,我们一般会想到用FlashPlayer去打开,但其实也是可以用IE浏览器去打开它,换位思考;
问题二、宏的安全设置问题
在Word和Excel程序环境下出现这种问题的概率比较多,但它也会影响其它的Office程序.
解决方法:修改宏的安全设置
Office程序默认是禁用宏的运行的,比如我们在工作当中,Excel使用宏的情况是非常多的,宏能给我们带来很大的帮忙,特别是涉及到一些数据库链接的情况,方便的同时也存在身一定的安全隐患,下面我们一起看如何取消它
1)、启动Word/Excel程序;
2)、依次打开文件�选项�信任中心-信任中心设置-宏设置,如下:
3)、将"启用所有宏(不推荐;可能会运行有潜在危险的代码)"前面的选项打上勾,然后确定所有的设置,再去打开有问题的文档;
补充:通过系统的添加安装程序找到系统更新,留意一下最新更新了什么补丁,如果有,则进行删除并测试程序是否还会出错。
问题三:蓝牙Add-in的问题
启用蓝牙的这个加载项有可能会出现Office程序出现,这种情况大概发生在使用了系统更新后而出现的问题
解决方法:
1)、启动Word/Excel程序
2)、选择文件选项卡�选项---加载项---管理:Add-ins,单击"转到",如下:
3)、出现如下对话框,将"SendtoBluetooth"前面的选项勾去掉,然后点击确定
4)、如果程序还是继续出错,你可能还要按照这个方法去设置一下Excel,PowerPoint等。
解决方法二:启用程序的安全模式
程序的安全模式下是不加载任何的加载项,如果安全模式能够正常运行,那基本上可以判定是加载项的问题,这将缩短您解决问题的范围;
本文出自 "Near的家园" 博客,请务必保留此出处http://nearlv.blog.51cto.com/2432295/1252414
学习Android开发有一段时间了,一直没有总结写点文章,一来是网上相关的技术文章已经很多了,难以写出新意;另一方面,想多积累多沉淀一些,随着学习的加深,慢慢总会发现前面掌握的知识比较片面,许多功能的实现,总能找到更好的解决方案。
今天开始我的Android开发笔记的第一篇文章吧,写一点Android开发过程中掌握的一些小技巧,有的是自己总结出来的,有的是从其他人的博客中学到的,也有一些是在一些开源的Android项目中见到的,分享在此,供初学者借鉴,也欢迎留言探讨。
在开发过程中,我们经常会需要用到一些全局的变量或者全局的"管理者",例如QQ,需要有一个"全局的管理者"保存好友信息,各个activity即可直接通过该"管理者"来获取和修改某个好友信息,显然,这样的一个好友信息,保存到某一个具体的activity里面,然后依靠activity的intent来传递参数是不合适。我们有两种方法来实现这样一个全局的管理者,一种是使用C++/Java中常用的单例模式,另一种是利用Android的Application类,下面一一阐述。
单例模式在面向对象的开发中很常见,我也不详细描述,简单地给出实现的代码示例吧:
public class QQInfoManager { private static final QQInfoManager mInstance = new QQInfoManager(); public static QQInfoManager getInstance() { return mInstance; } public boolean funcA() { return true; } ...... }
各个activity想要使用该类对象,通过QQInfoManager.getInstance() 来使用即可。
唯一要说明的就是这种单例模式的实现方式与下面这种单例模式的实现方式的区别:
public class QQInfoManager { private static QQInfoManager mInstance = null; public static QQInfoManager getInstance() { if(mInstance==null) { mInstance = new QQInfoManager(); } return mInstance; } public boolean funcA() { return true; } }
第二种单例模式的实现思路,是在第一次使用该类对象的时候来才创建,这样的好处在于节省程序启动动时间和内存空间,如果程序运行过程中一直没有使用该类对象,则内存中不会创建该对象。而第一种方式在程序启动的时候就在内存中创建好了该对象,直到程序结束。但是,第二种方式也有弊端,它并不是线程安全的,在多线程中,如果两个线程同时第一次使用该类对象,则可能会产生意想不到的结果。
下面说下Application方式的实现。
Application类是Android提供的保存全局变量的类,其实该类的onCreate方法是整个Android程序真正的入口。该类对象会在程序启动时被创建,直到程序结束。我们可以通过继承该类来实现全局数据的管理,同时,也可以通过重载该类的方法,在程序的各个生命期插入我们期望的代码。
import android.app.Application; public class QQApplication extends Application { @Override public void onCreate() { //应用程序启动时被系统调用 } @Override public void onTerminate() { //应用程序退出时会被系统调用 } //示例函数 public boolean funcA(){ return true; } }
这样定义了还不够,还需要到工程的 AndroidManifest.xml中,在 <application> 标签中,添加一项:
android:name=".QQApplication"
这样定义以后 ,即可在程序的各个activity中使用了,使用方法示例如下:
//获取application对象 QQApplication app = (QQApplication)getApplicationContext(); //调用方法 app.funcA();
下面再谈一谈使用 Application和 Instance 的区别:
Application对象只能用在activity中,因为 getApplicationContext方法是需要一个Context类型的this指针,一般的java对象不包含这个Context类对象。
整个程序的Application对象只有一个,而Java的单例模式的类可以有很多个,在业务逻辑比较复杂的应用中,全部使用一个Application 类对象来管理全局信息其实并不合适。
Application类本身也属于Context的子类,所以该对象可以向上转型为Context类型,该类可以直接使用Android提供的各种服务,如:getSystemService(Context.CONNECTIVITY_SERVICE); getSystemService函数需要Context对象才能调用,普通的Java类无法直接使用。
比较建议的使用方法是,如果需要全局类来保存数据,尽量 使用单例模式的 Java类,而Application类对象以用来管理各个全局的单例Java类对象,比如初始化和资源清理,以及传递this指针(Context类对象)给这些Java类来使用系统的服务。
关于 Application 和Instance 的使用小技巧就说到这儿了,不够清楚的地方欢迎留言讨论或者邮件lujun.hust@gmail.com交流。
本文出自 "对影成三人" 博客,请务必保留此出处http://ticktick.blog.51cto.com/823160/1252222
没有评论:
发表评论