2016-12-05 87 views
0

我有出口的HTML表格到Excel中的一個功能,類似這樣的問題,設置活動單元格:HTML Table to Excel Javascript如何導出HTML表時到Excel

我的問題是,默認情況下,Excel的啓動時選擇A1單元格這是不希望的。我想要先不選擇任何東西,或者用另一個預定義的單元格(比方說A3)。

有沒有辦法做到這一點?我可以在生成的html代碼中添加一些標記來說「選擇A3」嗎?

回答

0

經過幾個小時的搜索,我找到了答案。

HTML的</head>部之前添加以下代碼:

<!--[if gte mso 9]> 
<xml> 
    <x:ExcelWorkbook> 
     <x:ExcelWorksheets> 
      <x:ExcelWorksheet> 
       <x:Name>Worksheet</x:Name> 
       <x:WorksheetOptions> 
        <x:ActivePane>3</x:ActivePane>     
        <x:Panes> 
         <x:Pane> 
          <x:Number>3</x:Number> 
          <x:ActiveRow>3</x:ActiveRow> 
          <x:ActiveCol>2</x:ActiveCol> 
         </x:Pane> 
        </x:Panes> 
       </x:WorksheetOptions> 
      </x:ExcelWorksheet> 
     </x:ExcelWorksheets> 
    </x:ExcelWorkbook> 
</xml><![endif]--> 

這將選擇B3細胞(ActiveCol:2 = B,ActiveRow:3)當用戶打開所產生的Excel文件。

由於某些原因,窗格編號爲必須爲爲3。不知道爲什麼。所有我能找到的是這樣的:http://dev.bowdenweb.com/css/v/ms-office/ofhtml9/Excel/xleleNumber.htm其中提到

當數據來自PivotList組件,窗格元素的數目子元素 是必需的,包含整數3

0

如果此Javascript正在爲您創建一個excel工作簿,那麼默認情況下無法將宏添加到工作簿。但是,你可以做到以下,但我想指出,這是不好的做法,我不會推薦它。另外值得注意的是,每個工作表必須始終選擇至少一個單元格,因此您不能選擇'無'

您可以將事件處理程序添加到個人Excel工作簿(如果您需要創建此工作簿,請按照this guide),而如果你的HTML表格輸出有一個標準的文件名,那麼這將選擇任何單元格你喜歡,當你在Excel中打開它們:

個人,粘貼的ThisWorkbook

Private Sub Workbook_Open() 
    Set ExcelEvents = New CExcelEvents 
End Sub 

然後創建一個新的類模塊(右鍵單擊ThisWorkbook,>插入...>類Mo獨樂,並粘貼此代碼:

Option Explicit 

Private WithEvents XLApp As Application 

Private Sub Class_Initialize() 
    Set XLApp = Application 
End Sub 

Private Sub XLApp_WorkbookOpen(ByVal Wb As Workbook) 
    If InStr(1, Wb.Name, "HTMLTableOut", vbTextCompare) > 0 Then Wb.ActiveSheet.Range("A3").Select 
End Sub 

替換HTMLTableOut與你期望的文件名存在的文字,這是獨家通過該方法導出表,並與您要選擇的細胞替代A3。

...但這是一個解決這個問題的方法。

+0

很抱歉,如果我沒不清楚,但解決方案必須在生成的html輸出中,而不是通過在Excel中手動執行。我可以以某種方式將您提供的模塊代碼插入到用於excel的html標記中以提取出來嗎? – pkExec

+0

不,我不這麼認爲。據我所知,沒有簡單的方法來改變諸如選擇之類的東西,而實際上並沒有在某些時候打開excel。您可以將宏代碼推送到Excel文檔中,但是選擇只會在文件第一次打開時纔會改變,並且只有在用戶啓用文檔的活動內容後纔會更改,並且他們需要爲所有文檔執行此操作而不是僅僅一個個人文件。 –