您的位置:首页 > 其它

GridView导出为Excel后,导出的.xls文件无法作为源文件导入的问题

2008-12-25 18:10 495 查看
今天有人问了一个导出到Excel的问题,经典的导出代码想来大家也都知道,就是循环读数据,写成一个HTML,然后存为一个.xls文件。

可以参考我之前的一篇文章:GridView导出到Excel和开源图表工具

这种文件是可以在Excel程序里正常打开的,但如果使用这种文件作为数据源文件再进行导入,但我们使用下面的经典Excel导入Sql的代码时,就会出错。

SELECT*FROMOPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel5.0;DatabASE=[Excel表.xsl文件的路径];HDR=YES;IMEX=1',Sheet1$')

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

原因是这个导出的文件仅仅是一个文本的HTML文件,而不是Excel的原始(native)文件格式。

大家可以这样测试一下,到这里http://mattberseth2.com/demo/Default.aspx?Name=Export+GridView+to+Excel&Filter=All下载导出的Excel,这是用记事本打开,是这样的:





如果用Excel打开再另存一下,就是这样的了:





为了确保导出的Excel在各种版本和情况都可以使用,可以考虑转换为Excel的原始(native)格式。这个需要使用OLEObject。有一点示范的代码:

//ConvertHTMLfiletoExcelnativeformat

OLEObjectexcel

excel=CREATEOLEObject

ifexcel.ConnectToObject(docname)=0then

excel.application.DisplayAlerts=FALSE

excel.application.workbooks(1).Parent.Windows(excel.application.workbooks(1).Name).Visible=True

excel.application.workbooks(1).saveas(docname,39)

excel.application.workbooks(1).close()

endif

DESTROYexcel

//done
一些可以参考的网页:
Excle导出:

GridView导出到Excel和开源图表工具

Excel表数据导入SqlServer数据库中

ExporttoExcel:UseASP.NETtosendfunctionallyrichreportstoyourusers.

HowToExportDatainaDataGridonanASP.NETWebFormtoMicrosoftExcel

一个有关保存为EXCEL的问题.马上给分!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐