diff --git a/hledger-lib/Hledger/Write/Html.hs b/hledger-lib/Hledger/Write/Html.hs
index 037d3dc8a..b748876cb 100644
--- a/hledger-lib/Hledger/Write/Html.hs
+++ b/hledger-lib/Hledger/Write/Html.hs
@@ -30,6 +30,7 @@ formatCell cell =
let align =
case cellType cell of
TypeString -> []
+ TypeDate -> []
_ -> [LucidBase.makeAttribute "align" "right"]
withEmph =
case emph of
diff --git a/hledger-lib/Hledger/Write/Ods.hs b/hledger-lib/Hledger/Write/Ods.hs
index b87b9fbe5..cdeb014f6 100644
--- a/hledger-lib/Hledger/Write/Ods.hs
+++ b/hledger-lib/Hledger/Write/Ods.hs
@@ -71,6 +71,19 @@ printFods encoding tables =
" " :
" " :
" " :
+ " " :
+ " " :
+ " -" :
+ " " :
+ " -" :
+ " " :
+ " " :
+ " " :
+ " " :
+ " " :
+ " " :
customStyles ++
"" :
[]
@@ -201,23 +214,30 @@ formatCell cell =
let style, valueType :: String
style =
case (cellStyle cell, cellType cell) of
- (Body emph, TypeAmount amt) -> numberStyle emph amt
+ (Body emph, TypeAmount amt) -> tableStyle $ numberStyle emph amt
(Body Item, TypeString) -> ""
- (Body Item, TypeMixedAmount) -> " table:style-name='amount'"
- (Body Total, TypeString) -> " table:style-name='foot'"
- (Body Total, TypeMixedAmount) -> " table:style-name='total-amount'"
- (Head, _) -> " table:style-name='head'"
-
+ (Body Item, TypeMixedAmount) -> tableStyle "amount"
+ (Body Item, TypeDate) -> tableStyle "date"
+ (Body Total, TypeString) -> tableStyle "foot"
+ (Body Total, TypeMixedAmount) -> tableStyle "total-amount"
+ (Body Total, TypeDate) -> tableStyle "foot-date"
+ (Head, _) -> tableStyle "head"
numberStyle emph amt =
- printf " table:style-name='%s-%s'"
+ printf "%s-%s"
(emphasisName emph)
(numberStyleName (acommodity amt, asprecision $ astyle amt))
+ tableStyle = printf " table:style-name='%s'"
+
valueType =
case cellType cell of
TypeAmount amt ->
printf
"office:value-type='float' office:value='%s'"
(show $ aquantity amt)
+ TypeDate ->
+ printf
+ "office:value-type='date' office:date-value='%s'"
+ (cellContent cell)
_ -> "office:value-type='string'"
in
diff --git a/hledger-lib/Hledger/Write/Spreadsheet.hs b/hledger-lib/Hledger/Write/Spreadsheet.hs
index 3724c61f0..96fb14610 100644
--- a/hledger-lib/Hledger/Write/Spreadsheet.hs
+++ b/hledger-lib/Hledger/Write/Spreadsheet.hs
@@ -18,6 +18,7 @@ data Type =
TypeString
| TypeAmount !Amount
| TypeMixedAmount
+ | TypeDate
deriving (Eq, Ord, Show)
data Style = Body Emphasis | Head
diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs
index 2f4059c5b..f55aa96f7 100644
--- a/hledger/Hledger/Cli/Commands/Balance.hs
+++ b/hledger/Hledger/Cli/Commands/Balance.hs
@@ -900,14 +900,15 @@ multiBalanceRowAsCellBuilders bopts ReportOpts{..} colspans (PeriodicReportRow _
-- complicates the data representation and can be easily calculated
where
wbCell = Ods.defaultCell . wbFromText
+ wbDate content = (wbCell content) {Ods.cellType = Ods.TypeDate}
totalscolumn = row_total_ && balanceaccum_ `notElem` [Cumulative, Historical]
cs = if all mixedAmountLooksZero allamts then [""] else S.toList $ foldMap maCommodities allamts
allamts = (if not summary_only_ then as else []) ++
[rowtot | totalscolumn && not (null as)] ++
[rowavg | average_ && not (null as)]
addDateColumns spn@(DateSpan s e) = (wbCell (showDateSpan spn) :)
- . (wbCell (maybe "" showEFDate s) :)
- . (wbCell (maybe "" (showEFDate . modifyEFDay (addDays (-1))) e) :)
+ . (wbDate (maybe "" showEFDate s) :)
+ . (wbDate (maybe "" (showEFDate . modifyEFDay (addDays (-1))) e) :)
paddedTranspose :: a -> [[a]] -> [[a]]
paddedTranspose _ [] = [[]]