如何防止OpenOffice/LibreOffice Calc更改您输入的内容(数据、数字等)

48

基本上,我希望LibreOffice Calc按照我的要求进行操作,而不是按照它自己的想法进行操作。

例如:

  • 当我输入1.1.12时,我希望在该单元格中显示1.1.12,而不是01.01.2012或其他任何内容。
  • 当我输入001时,我希望在该单元格中显示001,而不是1。
  • 依此类推。

我希望它永远不会触碰我的数据,除非我明确告诉它这样做。这是否可能?

我知道我可以设置单元格格式为文本。但这并没有起到任何帮助。例如:

  • 输入1.1.12,显示为01.01.12,格式为文本,则变成“40909”,原始输入被丢失。
  • 将空单元格格式化为文本。粘贴"000 001 002 ...",用换行符分隔。显示为"0 1 2 ..."

我知道我可以在任何字符前面写'来强制其为文本。但是这并没有帮助,因为当我粘贴文本时,我无法自动添加'。

我希望这是可能的。我尝试过在Google上搜索不同的问题,但从未找到一个好答案。


不确定为什么这对你不起作用。我的OO v4.3.1接受并保留您期望的特定数据格式,例如001或1.1.12,无论是在公式栏还是单元格中,当单元格格式为文本(@)时。如果在前面放置是您唯一的解决方案(可能会导致计算问题),则可以考虑创建一个宏[shift]+[control]+v,该宏在任何粘贴的数据前面输入`。或者,您可以使用AutoHotKey创建一个宏,在Calc内部执行相同的操作。 - Robert Ilbrink
嗯,你说的@是什么意思?在单元格中写入@<文本>会显示@。关于文本格式化的问题,正如我所描述的,当我粘贴时,OpenOffice仍然会删除零,尽管单元格保持为文本格式。你可以自己试一试。打开Calc,将一列格式化为文本。打开记事本,输入00001,按回车,输入0002。复制,粘贴到你已经格式化为文本的那一列。单元格仍然保持为文本格式,但前导零被删除了! - Istrebitel
9
基本上,我希望LibreOffice Calc按照我的意愿执行操作,而不是自己的意愿。我经常遇到这样的问题。 - embert
是的。这个软件的设计师不太好。 用电子表格来存储账户信息,然后因为账号以0开头而弄错账号,真的很尴尬。 唉,又是一个典型的“少即是多”的例子。可惜免费软件的设计师们还是无法理解这一点。 - default123
8个回答

22
如果您希望输入的内容被解释为文本,并防止 Calc 对您的输入进行花哨(且令人讨厌)的操作,您需要在输入任何值之前更改格式。
  • 选择单元格/列/行。
  • 右键单击“格式单元格...”
  • 选择“数字”选项卡
  • 在“类别”列表中选择“文本”(最后一个选项)
  • 选择格式“@”(这是此类别中唯一的格式)
  • 点击“确定”
您可能还需要调整“自动更正”选项。转到“工具 > 自动更正选项...”。这里有一个链接可以帮助您:https://help.libreoffice.org/Calc/Deactivating_Automatic_Changes

3
这并不能让复制粘贴的数据在这些单元格中按预期方式运行。前导零仍然被删除。但是,被接受的答案的解决方案确实有效。 - Ethan

19

我理解你在粘贴纯文本时遇到的问题。这可能比你想象中的更费力(我们可以尝试以后自动化),但当我从记事本中粘贴数据时,会弹出如下导入屏幕。选择列标题,然后选择列类型: 文本。这应该可以解决你的粘贴/导入问题。另一种方法是使用AutoHotKey脚本来处理。

enter image description here

顺便说一下,“@”是文本格式类型,就像你有24小时制的“HH”或星期几的“ddd”一样...


1
啊哈。那个之前是不可用的,我还以为它在我的情况下无法工作或不允许使用,但实际上点击该列使其变为活动状态并允许我选择文本。这使得前导零正确地粘贴了。我想这与整个表格的文本格式相结合,实际上就是我要找的东西。谢谢! - Istrebitel
1
谢谢!那个有效。不过很让人沮丧的是,Calc忽略了你在目标工作表中已经做出的格式选择,并要求你在这里再次进行选择。 - Ethan

5
当您进行导入时,会给您提供一些选项。选择“将引号字段视为文本”,以便任何在引号内的文本都会被视为文本,由LibreOffice解释为神圣的,并且不会像它们识别为数字的内容一样被修改。
请参考以下截图: enter image description here

2
这是唯一对我起作用的解决方案。即使在粘贴前将单元格格式设置为文本,Calc 仍会自动删除前导零。我不得不用双引号将所有数字括起来,以便让 Calc 保留数字不变。很糟糕。 - JAT86

1
当您将数据复制到剪贴板中后,单击主菜单中的编辑 -> 粘贴为...。在下一个窗口中选择"粘贴为文本"。您的所有数据都将按原样粘贴。

0

只需在文本前加上字符','0.1.16和calc将解释为文本数据


我猜他在谈论粘贴。他还提到,'对他不好,因为他不是在输入而是在粘贴数据。 - vacip
这对我很有效,手动输入带前导零的发票号码,而不是粘贴它们。 - Martin

-1

我从另一个网站复制了一些数字,但它总是显示日期。后来我尝试了一下,在粘贴板上点击箭头,选择了无格式文本或HTML格式的选项。我选择了无格式文本,然后弹出了一个窗口显示我想要的文本,于是我按了“确定”。


-1

我的问题是货币相关的,如果输入的数字可以表示日期,例如4.22变成$42,482,那么正确格式化后会变成一个更大的数字。我发现添加一个尾随零可以解决这个问题。


-1

我最初来到这个页面时,遇到了一个非常相似(但不完全相同)的问题。我在此发布解决方案,以便那些可能遇到相同问题的人受益。

每次我在OpenOffice中保存、关闭然后重新打开我的.XSLX电子表格时,它都会删除我输入的文本之间的空格。例如:

  • "Did not attend" 会变成 "Didnotattend"。
  • "John DOE" 会变成 "JohnDOE",等等。

很遗憾,像上面建议的那样指定“text”(@)作为格式并没有帮助我。

最终解决方法是将其保存为.ODS文件而不是.XSLX文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接