请问下广大网友如何恢复libreoffice读取错误的文档?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问下广大网友如何恢复libreoffice读取错误的文档?相关的知识,希望对你有一定的参考价值。

参考技术A 今天也遇到相同问题,网上搜索了一下解决方法,还算轻松地解决了,总结如下:
LibreOffice
Cale
的档案无法开启,请教解决方法.
读取错误:发现子文件Content.xml内档案的格式错误,位置在2,6224761(row,col).
1.备份该Cale的档案,用解压软体提取Content.xml,因为原content.xml
没有换行,为了查看方便,推荐将
>
替换为
>\n
。这还能方便文本编辑器进行“折叠”。
2.用Firefox开启Content.xml,会出现错误讯息和错误行,字
3.以文字编辑软体修改Content.xml的错误(档案很大要有耐心),存档别离开,再一次用Firefox开启Content.xml,若有错误再修改,直到Firefox可以读取成功,存档离开编辑
4.用解压软体开启该Cale的档案,替换正确的Content.xml,存档後便可用Libreoffice读取
我的例子是:UbuntuStudio
14.04
版,
(1)首先备份你这个出错的文件;
(2)
鼠标右键点击
libreoffice
calc

ods
文件,选择用归档管理器(Archive
Manager)打开;
(3)在弹出的窗口里,鼠标右键点击
content.xml
文件,选择打开方式,选择gedit;
(4)在gedit里,用替换功能,把
>
替换为
>\n
(等待的时间会很长),然后显示起来就好看多了;
(5)在gedit里,把这个文件“另存为...”
abc.xml
文件,保存在另一个目录下;
(6)然后鼠标双击
abc.xml
文件,默认会用FireFox打开,然后可以看到提示在第几行第几列出错;
(7)在gedit里,鼠标点击任意一行,下面的状态栏可以看到所在的行数和列数,找到出错的地方;
(8)修改错误,由于出错的问题各不相同,所以修改方法也各不相同,
有些错误也许要了解xml语法格式才能修改好,不会修改的话,也可以试试干脆删除那一小段,
我的例子是在这一句的结尾重复多了一个颜色:
fo:color="#3333ff"
fo:color="#ff3333"/>
删除其中一个即可;
(9)在gedit里修改好
abc.xml
文件后,点击保存,然后再用FireFox打开看看有没有出错提示;
(10)全部错误修改好后(通常也只有一个错误),再重新用gedit打开归档管理器里的
content.xml
文件;
(11)在gedit里,把修改好的
abc.xml
文件内容全选复制,覆盖粘贴到
content.xml
文件里,
其实更保险的方法是,在
content.xml
文件里查找出错的那部分代码,手工修改,
(12)点击保存
content.xml
文件,系统会自动提示你,是否更新归档文件?当然更新了,求之不得呢。
(13)然后鼠标双击
ods
文件,哈哈,又能打开了,恢复正常!

如何读取 ods 文档(例如 LibreOffice calc)并将其转换为 Julia 数据帧?

【中文标题】如何读取 ods 文档(例如 LibreOffice calc)并将其转换为 Julia 数据帧?【英文标题】:How to read an ods document (e.g. LibreOffice calc) and convert it in a Julia dataframe? 【发布时间】:2016-12-06 15:42:45 【问题描述】:

如何在 Julia DataFrame 中从 ODS 电子表格(由 OpenOffice、LibreOffice 等使用)导入数据?

(这是一个社区维基问答)

【问题讨论】:

【参考方案1】:

如果机器上安装了 python,则 Julia 可以非常直接地使用 ezodf 模块,使用 PyCall:

using PyCall
using DataFrames

@pyimport ezodf
doc = ezodf.opendoc("test.ods")
nsheets = length(doc[:sheets])
println("Spreadsheet contains $nsheets sheet(s).")
for sheet in doc[:sheets]
    println("---------")
    println("   Sheet name : $(sheet[:name])")
    println("Size of Sheet : (rows=$(sheet[:nrows]()), cols=$(sheet[:ncols]()))")
end

# convert the first sheet to a dictionary
sheet = doc[:sheets][1]
df_dict = Dict()
col_index = Dict()
for (i, row) in enumerate(sheet[:rows]())
  # row is a list of cells
  # assume the header is on the first row
  if i == 1
      # columns as lists in a dictionary
      [df_dict[cell[:value]] = [] for cell in row]
      # create index for the column headers
      [col_index[j]=cell[:value]  for (j, cell) in enumerate(row)]
      continue
  end
  for (j, cell) in enumerate(row)
      # use header instead of column index
      append!(df_dict[col_index[j]],cell[:value])
  end
end  

# and convert the dictionary to a DataFrame
df = DataFrame(df_dict)

(这只是 Julia 对 davidovitch 的 python 代码on this answer的重写)

编辑:

我现在确实根据这段代码编写了一个 Julia 包:OdsIO。

它提供了几个从 ods 文件(包括单元格范围)导入数据的功能,希望很快它也允许导出。

编辑2:

从 v0.1.0 版本开始支持导出到 Ods

【讨论】:

以上是关于请问下广大网友如何恢复libreoffice读取错误的文档?的主要内容,如果未能解决你的问题,请参考以下文章

LibreOffice 如何恢复当前元素

请问wps和libreoffice哪个更好一些

如何读取 ods 文档(例如 LibreOffice calc)并将其转换为 Julia 数据帧?

LibreOffice XForm:如何使用 javascript 宏读取表单数据

LibreOffice - 报错提示安装不完整

oracle undo表空间被删除,数据库无法启动,请问如何恢复