【问题标题】:Default numeric format in ExcelExcel 中的默认数字格式
【发布时间】:2014-05-28 20:24:07
【问题描述】:

我有一个将报告导出到 Excel 的网络应用程序。它通过将报告表的 HTML 发送到剪贴板,然后将其粘贴到 Excel 中来实现这一点。又快又脏。它通过得相当好。数字格式为数字,日期格式为日期等。

但报告的负数格式使用括号而不是减号,当将其粘贴到 Excel 中时,它会变为减号。您只需在记事本中键入 (200),然后选择它、复制它并将其粘贴到 Excel 电子表格中的单元格中,即可看到这一点。它将通过 -200。

我的用户希望它显示为 (200)。我可以使用 Javascript 的自动化来手动格式化选定的单元格。但这很慢。有什么方法可以让 Excel 更改其默认数字格式?

【问题讨论】:

  • 如果不轻松使用某种加载项,则并非如此。这是快速而肮脏的方法的问题之一。 :D 以您想要的列中的格式保存一个 excel 文档。现在将扩展名重命名为 .zip。现在打开 zip 文件并查看所有表示 .xlsx 的元素。在 xl 文件夹中有一个 styles.xlm 我相信会有类似<numFmt formatCode="0.00_);[Red]\(0.00\)" numFmtId="164"/> 这样的行,您必须以某种方式更新最终用户文件的 XML 才能完成此操作(或使用已经由第 3 方开发的 API),这就是为什么我说不简单。

标签: excel formatting default numeric


【解决方案1】:

如果您以表格形式将 HTML 格式的数据粘贴到 Excel 中,则可以包含 css 样式来控制单元格内容的显示方式。

参见(例如):http://cosicimiento.blogspot.com/2008/11/styling-excel-cells-with-mso-number.html

VBA 示例:

Sub Formatting()

    Dim html As String, d As New DataObject

    html = "<table><tr><td>(200)</td></tr>" & _
           "<tr><td style='mso-number-format:\@'>(200)</td></tr></table>"

    d.SetText html
    d.PutInClipboard

End Sub

HTML 示例:CSS Formatting for Excel Web Query

【讨论】:

  • 那是如此接近。它实际上是这样的: mso-number-format:"\#\,\#\#0\.00_ \;([Red]\#\,\#\#0\.00\) " 但我给你是答案,因为如果没有你的指点,我在一万亿年内永远不会得到它。谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-01-05
  • 2014-03-29
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多