2016-12-05 57 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文档中,但是选择只会在文件第一次打开时才会改变,并且只有在用户启用文档的活动内容后才会更改,并且他们需要为所有文档执行此操作而不是仅仅一个个人文件。 –