使用C#,想把數據的導出為2007格式的Excel,擴展名為xlsx,開始使用如下的連接語句: sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + fileName里面指示的擴展名為xlsx,導出成功后一打開,提示: 打不開文件,后來把文件后綴改為xls可以打開,但沒有顯示“兼容模式”,且用winrar可以打開,是一個壓縮包來的,證明不是2003格式,但不是xlsx格式,后來發(fā)現還有一種格式,二進制格式保存的2007格式,后綴名為xlsb,把后綴改為這個,果然正常打開了。 那么,怎么保存為xlsx格式呢?通過進一步查找,終于找到答案,需要使用下面的連接語句: sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 后面增加了Xml,就是保存成文本格式的Office Open XML格式。這樣就行了。 上面的 HDR=YES 表示第一行是列名而不是數據。我實際使用中發(fā)現,不加這個,輸出的文件好像也沒什么不同。這個應該是針對讀取來用了,因為假如HDR=NO的時候,第一行也被當成數據來讀取了。而這個時候,由于列名一般為字符串,有可能導致一列中有多種不同的數據類型,可使用"IMEX=1"來檢索混合數據列。 如果沒有這個引擎(例如沒有安裝office2007或以上版本),可到下面地址下載: Microsoft.ACE.OLEDB.12.0下載地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891 另外,2003格式的連接語句如下: sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 根據SaveFileDialog選擇的不同擴展名,自動選擇連接語句的代碼: saveFileDialog.Filter = "Excel2003 files (*.xls)|*.xls|Excel2007 (*.xlsx)|*.xlsx|Excel2007二進制表 (*.xlsb)|*.xlsb"; |
|