2009-10-17 72 views
0

如何使用OLE连接访问XML Excel格式文件?可以做到吗?我访问过正常的Excel格式2003 xlsx文件,但是当我生成Excel XML格式时,我无法访问OLE。预先感谢您的帮助。使用Ole连接访问MS Excel XML格式

我可以在Excel中手动打开文件,但我无法通过OleDb连接连接到它。我通过共享驱动器上的内存流将自己的XML转储到Excel文件中。如果我手动将Excel文件保存为Excel 97-2003格式。但是,当我将它保存为XML文件时,我无法通过dataconnection访问它。

我的连接看起来是这样的....

String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
    "Data Source=" + file_path + ";Extended Properties=Excel 8.0;"; 

感谢先进的帮助。

这是我保存到xls文件并在Excel中打开它的工作正常的代码。我从我的应用程序生成XML。我正在尝试使用Ole访问相同的文件?

<html xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns="http://www.w3.org/TR/REC-html40" 
<head> 
<style> 
<!--table 
@page 
{margin:0.0in .0in 0.34in .0in; 
mso-header-margin:.5in; 
mso-footer-margin:.18in; 
mso-footer-data:"Page &P of &N"; 
mso-page-orientation:landscape;} 
--> 
</style> 
<!--[if gte mso 9]><xml> 
<x:ExcelWorkbook> 
<x:ExcelWorksheets> 
<x:ExcelWorksheet> 
<x:Name>Summary</x:Name> 
<x:WorksheetOptions> 
<x:FitToPage/> 
<x:FitToPage/> 
<x:Print> 
<x:FitHeight>32767</x:FitHeight><x:ValidPrinterInfo/> 
<x:HorizontalResolution>600</x:HorizontalResolution> 
<x:VerticalResolution>600</x:VerticalResolution> 
<x:DoNotDisplayGridlines/> 
<x:ProtectContents>False</x:ProtectContents> 
<x:ProtectObjects>False</x:ProtectObjects> 
<x:ProtectScenarios>False</x:ProtectScenarios> 
</x:WorksheetOptions> 
</x:ExcelWorksheet> 

<Worksheet ss:Name="DATE1"> 
    <Table ss:ExpandedColumnCount="13" ss:ExpandedRowCount="2" x:FullColumns="1" 
    x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"> 
    <Row ss:Height="63.75"> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">DATE</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something1</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something2</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something3</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something4</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something5</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something6</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something7</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something8</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something9</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something10</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something11</Data></Cell> 
    <Cell ss:StyleID="s63"><Data ss:Type="String">something12</Data></Cell> 
    </Row> 
    <Row> 
    <Cell ss:StyleID="s65"><Data ss:Type="String">something</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">268763</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">1331476</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">48267</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">1283209</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">34589</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">0.97304492097546003</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">23921</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">10668</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">0.99168646728631105</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">1730</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">8938</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="Number">99.303464985049203</Data></Cell> 
    </Row> 
</Table> 
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> 
    <FitToPage/> 
    <Print> 
    <FitHeight>32767</FitHeight> 
    <ValidPrinterInfo/> 
    <HorizontalResolution>600</HorizontalResolution> 
    <VerticalResolution>600</VerticalResolution> 
    </Print> 
    <Selected/> 
    <Panes> 
    <Pane> 
    <Number>3</Number> 
    <RangeSelection>R1C1:R2C13</RangeSelection> 
    </Pane> 
    </Panes> 
    <ProtectObjects>False</ProtectObjects> 
    <ProtectScenarios>False</ProtectScenarios> 
    </WorksheetOptions> 
</Worksheet> 
</Workbook> 

</xml><![endif]--> 

</head> 
</html> 
+0

您可以更具体吗?您使用的是什么XML格式(有不止一个)?最好发布一个示例代码片段。 – 2009-10-17 14:25:31

+0

您可以在Excel中手动打开XML文件(因为OLE不会自动执行此操作) – Mark 2009-10-17 15:12:29

+0

那么您使用哪种Excel XML格式?这将有助于发布一些XML。 – 2009-10-20 19:10:11

回答

1

从您更新的问题看来,您好像使用Excel的HTML导出(将某种XML嵌入到可能由Internet Explorer呈现的导出页面的HTML头部中,我认为此格式可以追溯到Excel 2000并且不支持数据绑定。

你需要使用这样的格式遗留原因?现在有更好的选择,例如使用新的基于XML的办公室的OpenXML的Office 2007格式或XML电子表格2003格式由Excel 2003引入。

+0

不幸的是,我创建了具有特定要求的应用程序,不依赖于服务器上安装的MS Office。 – sleath 2009-10-21 00:13:34

+0

使用XML格式不需要使用Office。 – 2009-10-21 00:38:55

+0

OpenXML就是我想要的。谢谢。 – sleath 2009-10-21 04:47:28

0

Extended Properties = Excel 12.0?