問題1:增加表頭
js導出表格時,只會導出table里的展現出的內容,如需增加表頭等內容需要在頁面獲取的字符串中拼接表頭的相關字符串,詳細介紹如下:
tableString:新增的表頭內容字符串;
ctx.table: 新增的表頭+頁面獲取的table字符串。
這樣,表頭就加上了,還可以通過style設置它的樣式:
問題2:mso-number-format定義數據格式
在做項目時遇到mso-number-format定義的科學計數法轉化格式與金額定義的向右對齊樣式有沖突。
之前有寫過篇博客專門記述mso-number-format定義科學計數法轉化格式。當使用這種方法導出文件時,有時會遇到一個問題,就是導出的Excel經常會把我們的數據自動識別為其他格式,例如只有純數字的字段在導出到 Excel后會被自動識別為數字格式,而一旦數字超過11位,Excel便會將其以科學計數法的形式來顯示,比如身份證號碼,帶區號的電話號碼等。
mso-number-format的屬性設置書寫如下:
<td style='mso-number-format:\"\@\";' class='tdRight'>
class='tdRight' 是設置右對齊樣式,這樣就有沖突,class定義的樣式不起作用。要想避免沖突,正確的寫法是:
<td style='mso-number-format:\"\@\"; text-align:right;' class='tdRight'>"
只需要把樣式都寫在style里即可,是不是簡單的讓人抓狂。
注意:class='tdRight' 不可以去掉,因為此處的td是通過append到頁面的,頁面的樣式還需要class來定義向右對齊。
補充:
當table頁面中有個別不想被打印出來的,只需要將這個元素隱藏起來即可,但有些按鈕、復選框向下圖這樣,即使隱藏也還會顯示:
打印出來是醬紫:
辦法就是將復選框等remove掉,在打印之后頁面再重新加載數據渲染復選框等,可能性能方面存在問題,暫時先這樣解決,以后有更好的方法再更新。
下面把mso-number-format 定義數據格式的css樣式羅列下:
mso-number-format:"0" NO Decimals
mso-number-format:"0\.000" 3 Decimals
mso-number-format:"\#\,\#\#0\.000" Comma with 3 dec
mso-number-format:"mm\/dd\/yy" Date7
mso-number-format:"mmmm\ d\,\ yyyy" Date9
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM" D -T AMPM
mso-number-format:"Short Date" 01/03/1998
mso-number-format:"Medium Date" 01-mar-98
mso-number-format:"d\-mmm\-yyyy" 01-mar-1998
mso-number-format:"Short Time" 5:16
mso-number-format:"Medium Time" 5:16 am
mso-number-format:"Long Time" 5:16:21:00
mso-number-format:"Percent" Percent - two decimals
mso-number-format:"0%" Percent - no decimals
mso-number-format:"0\.E+00" Scientific Notation
mso-number-format:"\@" Text (目前只用過)
mso-number-format:"\#\ ???\/???" Fractions - up to 3 digits (312/943)
目前只用過mso-number-format:"\@"
在導出的表格中顯示為文本格式。