在Excel中的版面設定可以對紙張大小的比例縮放,做進一步的設定,有時為了使列印出來或是轉為PDF時,一頁可以塞下足夠多的表格或,甚至是所有的表格,會修改比例縮放,甚至是改為符合「N頁寬M頁高」
但是這樣的情況會使插入的圖片也跟著調整比例,而無法維持原先期望的版面大小
因此會期望可以使圖片的大小不受到「縮放比例」與[N頁寬M頁高」的影響,但是要從哪裡下手呢?
本篇也是很簡單的告訴你使用哪種API功能解決。
前言
在Excel中的版面設定可以對紙張大小的比例縮放,做進一步的設定,有時為了使列印出來或是轉為PDF時,一頁可以塞下足夠多的表格或,甚至是所有的表格,會修改比例縮放,甚至是改為符合「N頁寬M頁高」,如下圖:
但是這樣的情況會使插入的圖片也跟著調整比例,而無法維持原先期望的版面大小,如下:
因此會期望可以使圖片的大小不受到「縮放比例」與[N頁寬M頁高」的影響,但是要從哪裡下手呢?
本篇也是很簡單的告訴你使用哪種API功能解決。
解決方法
當我們對Excel的版面配置設定為不使用縮放比例,而是,就程式中來說其實是(這邊以1頁寬1頁高為例):
currentSheetPageSetup.Zoom = false;
currentSheetPageSetup.FitToPagesWide = 1;
currentSheetPageSetup.FitToPagesTall = 1;
因此後來我打算對Zoom屬性作指定,但是發現Zoom屬性是dynamic型態...就算可以先透過檢查型態來知道為N頁寬M頁高,但仍然不知切換後,被調整的縮放比例是多少。
最後才發現原來對Pagesetup的ScaleWithDocHeaderFooter設為false,就可以解決上述所有問題了!@@
如下:
currentSheetPageSetup.ScaleWithDocHeaderFooter = false;
//第一頁頁首
if (currentSheetPageSetup.DifferentFirstPageHeaderFooter)
{
currentSheetPageSetup.FirstPage.LeftHeader.Picture.Filename = excelTileTextPrintWatermarkFullFileName;
currentSheetPageSetup.FirstPage.LeftHeader.Picture.LockAspectRatio = Office.MsoTriState.msoTrue;
currentSheetPageSetup.FirstPage.LeftHeader.Text = "&G";
}
//奇偶頁首
if (currentSheetPageSetup.OddAndEvenPagesHeaderFooter)
{
currentSheetPageSetup.EvenPage.LeftHeader.Picture.Filename = excelTileTextPrintWatermarkFullFileName;
currentSheetPageSetup.EvenPage.LeftHeader.Picture.LockAspectRatio = Office.MsoTriState.msoTrue;
currentSheetPageSetup.EvenPage.LeftHeader.Text = "&G";
}
//一般頁首
currentSheetPageSetup.LeftHeaderPicture.Filename = excelTileTextPrintWatermarkFullFileName;
currentSheetPageSetup.LeftHeaderPicture.LockAspectRatio = Office.MsoTriState.msoTrue;
currentSheetPageSetup.LeftHeader = "&G";
結果呈現:
注意事項
1. 雖然此方法可以產生滿版的浮水印或是圖片,但是前提是電腦的控制台->字型->字型大小是預設大小(一般為小),如果有更動過,則在插入圖片或浮水印時,仍然會因為系統的環境變化,使圖片做整體縮放(如下圖),此問題在Word也會出現。
2. 新版的Word Excel檔案格式 docx與xlsx會保留產生圖片或浮水印時的縮放比例,因此今天檔案若是到了有調整過電腦字型大小的不同台主機上,會維持原先比例;但很妙的是舊格式xls則又會依據此主機的字型大小,會再次做調整,但如果是doc則跟docx一樣不會。
這邊就來舉例一下Excel的情境,如下:
(1.) 產生浮水印或圖片之電腦的字型為小的環境下,產生xlsx檔案,此時浮水印的圖片會滿版(假設800 * 1200) ,跑到字型為大的電腦,仍可以維持原大小
(2.) 產生浮水印或圖片之電腦的字型為小的環境下,產生xls檔案,此時浮水印的圖片也會滿版,因為產生浮水印的電腦環境依樣(假設800 * 1200) ,跑到字型為大的電腦便會跑掉
(3.) 產生浮水印或圖片之電腦的字型為中的環境下,產生xlsx檔案,此時浮水印的圖片因為跟電腦預設的環境字型大小不同,變會跑版(會變小假設為640 * 480), 如果處理好的檔案,來到字型為小或是大的電腦,還是樣大小,因為是xlsx字型
(4.) 產生浮水印或圖片之電腦的為中的環境下,產生xls檔案,此時浮水印的圖片因為跟電腦預設的環境字型大小不同,變會跑版(會變小假設為640 * 480), 如果處理好的檔案,來到字型為小或是大的電腦, 還是會跑版(字型小的環境圖片會放大,字型大的環境會縮小),因為是xls,但是如果剛好來的是字型為中的環境,就維持640 * 480
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)
另外要轉載請附上出處 感謝