整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html文件删除如何恢复?恢复误删html文件教程

tml文件即超文本标记语言文件文档,是扩展名、后缀名为html的文件。超文本标记语言的结构包括头部分(Head)、和主体部分(Body),其中头部(head)提供关于网页的信息,主体(body)部分提供网页的具体内容。html文件能够被多种网页浏览器读取,传递。我们可以使用电脑上自带的记事本进行编辑htm文件。那么html文件删除如何恢复?

通常情况下当您从电脑存储设备中删除html文件时,该html文件会保存在回收站中。 可以根据需要通过单击还原选项将其还原。 但是不好运的情况下,如果您清空回收站或文件未经过回收站、或使用永久删除键Shift + Delete将文件删除怎么恢复呢?我们可以通过使用数据恢复软件来恢复。

html文件删除恢复步骤如下:

1、首先到官网下载并安装好云骑士数据恢复软件(注意:软件不能安装在丢失盘中),打开云骑士数据恢复软件,根据需要选择恢复功能,这里选择场景模式下的误删除文件。

2、选择好以后选择需要恢复数据的分区,如果是外接设备则可以将它插入电脑中,或者通过读卡器插入电脑,点击开始扫描。

3、扫描结束以后,你会发现有很多数据,这时我们可以通过文件类型进行查找,这里勾选其他文件类型,然后找到了需要的html格式文件。

因为文件丢失后有可能会因各种原因受损,所以遵循先预览再恢复原则,通过预览模式判断文件是否正常再进行恢复。对于无法预览或者不支持预览的是无法判断数据是好的还是坏的,只能恢复出来才能进行查看的。

4、接着在需要恢复的html文件前面进行勾选,选择好以后点击立即恢复按钮。

5、弹出设置文件路径窗口,将文件存储在安全区域中(如果存储盘不够内存,可以外接其他设备进行存储),点击确定按钮。

6、耐心等待文件导出完成,点击查看即可查看恢复出来的html文件了。

知识普及:

导致html文件丢失常见几种原因:

采用来源于Internet的各种各样没经验证的第三方应用程序也许会使您的html文件遭遇风险。

偶尔在下载那些应用程序时,某些恶意病毒也许会进入系统并破坏html文件结构,亦或它们也许会删除桌面上的所有html文件,因此致使大量数据丢失。

在重新分区或调整硬盘大小时,那些html文件也许会遗失。在重新分区时,一个重大的错误也会删除存储了所必需文件的分区,例如DOC、PPT、XLSX和HTML。

总结:以上就是html文件删除恢复教程了,如果在软件使用过程中有不懂的问题,可以咨询专业的在线客服人员为您解答~

本文来自 yqssjhf.com>> 创作不易,转载请注明出处。

天财务一同事打开excel文件后发现用了好几个月的某个表格打开后出错了,里面的内容丢失了一部分,就是关键性的列内容不显示了,如下图

部分单元格内容丢失

那么遇到这种情况这个表格还有救吗?这得看是哪种错误导致的,我们把表格复制到本地,然后打开。

会出现一个错误提示,主要是说有 XML 错误的 /xl/sharedStrings.xml,也就是sharedStrings.xml文件出错了,它是一个共享的单元格内容文件。

我们先把excel文件复制一份,然后把xlsx后缀更改为.rar,并进行解压缩,所有的xlsx文件都是由一堆文件组成的,可以解压为原始的xml文件,如下图。

xml文件语法非常严格,把sharedStrings.xml文件用浏览器打开看看会出现什么样的错语提示,然后再根据提示进行处理,其实在打开Excel文件的时候就提醒我们了,主要是开始标记与结束标记不匹配导致的,开始与结束标记为<si> </si>,只要会点html的话就很容易理解了。

好了,对于这个文件有两种修复方法

第三方软件修复

可以使用第三方的软件进行修复此问题,但是试了好多个修复工具后发现只有XLSX Open File Tool才能准确的修复,但是它是收费的,不付费只能看不能保存,最便宜价格199元,如果你的文件比较小,丢的内容也不多,对比着修复的内容自己填进去就行了,如果文件大那就购买软件修复吧,留着以后还能用。

手工修复

如果不想花钱还想要修复文件,那么可以手工进行修复,就是把sharedStrings.xml文件中的开始和结束标记补全就可以了,听起来很复杂,其实很简单,<si>和</si>是一一对应的,两者的数量一样多才对。

第一步:可以使用记事本或vs code编辑器来打开sharedStrings.xml文件,然后进行查找和替换,把所有的</r><si>替换成</r></si><si>,然后保存。

第二步:把修改好的sharedStrings.xml文件替换掉压缩包中的此文件。

第三步:把rar的后缀名再改回xlsx。

双击打开试试,大多数情况下就能正常打开你的Excel文件了。

怎么避免Excel文件中开始与结束标记不匹配的问题了

通过在网上查找资料发现导致这种原因的问题有很多,大致如下

1、表格中不要使用大量的外部链接

2、不要使用复杂的引用,能不引用就尽量别引用

3、不要从网页或软件导出的表格中直接复制粘贴,一些样式会导致此问题

4、不要设置复杂的格式,用多大的地方就设置多少的格式,不要设置格式时选择全表范围

5、有网友说搜狗拼音会导致此问题,尽量注意吧。

最重要的是数据和文件要养成经常备份的好习惯

项目开发中,你一定遇到过精度丢失的问题!比如某个无良的后端返回了一个超16位的数字订单号,比如0.1+0.2 != 0.3等等:

let a = 0.1235678912345623456
console.log(a)
let b = 256.1235678912345623456
console.log(b)
let c = 0.1
let d = 0.2
console.log(c + d)
let e = 2.55
let f = 1.55
console.log(e.toFixed(1))
console.log(f.toFixed(1))



01

精度丢失的原因

是什么原因造成的捏?

嗯〜

大道理咱也不会说,问就是一句话回复:

在十进制转二进制的过程中,因js存储位数有限制,末位就会0舍1入取近似值,从而导致再转回十进制时产生误差。



02

如何解决


  • 使用toPrecision;
  • 乘以10的N次幂转换成整数,再除以N次幂转回小数;
  • 先加上1e-14或Number.EPSILON再取值;
  • 使用第三方库,处理大数的 bignumber.js,处理小数的number-precision 和 decimal.js,处理JSON序列化json-bigint。

使用toPrecision


这个方法主要用于纯展示。先用toPrecision保留一定位数的经度,再通过parseFloat展示。

例如:

console.log(parseFloat(0.30000000000000004.toPrecision(12)))

这个12是精度默认值或者说是一个经验值,12位一般都能解决0000...1和0000...9的问题。一般不适合浮点数的运算。


先转整数进行运算,再转成小数


这种方式是我之前浮点运算时经常用到的方法。我们拿0.1+0.2的运算来举例:

let a = (0.1*10 + 0.2*10) / 10
console.log(a) //0.3

但这种方法也不是万能的,有时候也会失精:

console.log(33.41*100) //3340.9999999999995
console.log(2.55*100)  //254.99999999999997

真是防不胜防啊!这时候我们也可以使用Math.round()方法来达到我们的目的,如下:

console.log(Math.round(33.41*100))  //3341
console.log(Math.round(2.55*100))  //255
console.log((Math.round(0.1*10) + Math.round(0.2*10)) / 10)  //0.3

先加上1e-14或Number.EPSILON再取值


给浮点数加上一个极小的数就可以达到目的。获取极小的数有两种方式:

  • 1e-14(10的-14次方)
  • ES6的极小的常量Number.EPSILON


先来看看Number.EPSILON是什么?

console.log(Number.EPSILON)  //2.220446049250313e-16
console.log(Number.EPSILON.toFixed(20))  //0.00000000000000022204

这两种方式都可以,看自己的喜好啦!

let a = 0.1235678912345623456
console.log((a+1e-14).toFixed(1)) //0.1
console.log((0.1 + Number.EPSILON + 0.2 + Number.EPSILON).toFixed(1))
//0.3

第三方库

第三方库主要介绍以下四种:

  • bignumber.js的使用-处理大数

安装:

npm install --save bignumber.js

引入:

import BigNumber from 'bignumber.js';

使用:

const a = new BigNumber(0.2);
const b = new BigNumber(0.1)
let c = a.plus(b)
console.log(c) //BigNumber {s: 1, e: -1, c: Array(1)}
console.log(c.toString())  //0.3
console.log(c.toNumber())  //0.3

官网:https://mikemcl.github.io/bignumber.js/


  • number-precision的使用-处理小数

安装:

npm install number-precision --save

引入:

import NP from 'number-precision';

使用:

console.log(NP.strip(0.09999999999999998)); // 四舍五入:=0.1
console.log(NP.round(0.105, 2)) //取2位小数,四舍五入:=0.11
console.log(NP.plus(2.3, 2.6)); // 加:=4.9
console.log(NP.minus(1.0, 0.9)); // 减:=0.1
console.log(NP.times(3, 0.3)); // 乘:=0.9
console.log(NP.divide(0.9, 0.3)); // 除:=3
console.log(NP.plus(0.1, 0.2))


  • number-precision的使用-处理小数

安装:

npm install --save decimal.js

引入:

import Decimal from "decimal.js"

使用:

console.log(Decimal(0.1).add(Decimal(0.2))); // 加: {s: 1, e: -1, d: Array(1), constructor: ƒ}
console.log(Decimal(0.1).sub(Decimal(0.2))); // 减:{s: -1, e: -1, d: Array(1), constructor: ƒ}
console.log(Decimal(0.1).mul(Decimal(0.2))); // 乘:{s: 1, e: -2, d: Array(1), constructor: ƒ}
console.log(Decimal(0.1).div(Decimal(0.2))); // 除:{s: 1, e: -1, d: Array(1), constructor: ƒ}

上面的结果是Decimal 对象,取值需要Number 或 String转换

官网:http://mikemcl.github.io/decimal.js/


  • json-bigint的使用-处理后端的返回值

安装:

npm install json-bigint

引入:

import JSONBigInt from 'json-bigint';
const JSONBigIntNative = JSONBigInt();

使用:

let json = "{\"order\":258431607934229718,\"price\":1.258431607934229718,\"no\":123456}"
const obj1 = JSON.parse(json)
const obj2 = JSONBigIntNative.parse(json)
console.log(obj1) //{order: 258431607934229730, price: 1.2584316079342297, no: 123456}
console.log(obj2.order.toString())  //258431607934229718
console.log(obj2.price.toString())  //1.258431607934229718
console.log(obj2.order.toNumber())  //258431607934229730
console.log(obj2.price.toNumber())  //1.2584316079342297

主要是把大数据转成字符串。其实关于这一点,如果后端经验丰富的话,自然会给前端返回字符串,也无需前端转换。不过呢,可能前端的技能的提升也就是从无经验的后端开始的噢!