使用OLEDB创buildxls工作表时的数据types

我有一个ASP.NET 4.0 web app ,它将数据从SQL Server 2008 R2读取到DataSet 。 现在我想把这个数据写入一个xls文件(Office 2003)。 目前,我使用CREATE TABLE创build一个空的工作CREATE TABLE ,并使用insert语句将数据逐行写入。 但是我真正想要的是根据数据集中的数据形成excel文件中的文件。 例如,如果数据集中的字段是system.decimaltypes,我希望excel中的相应列被格式化为十进制。

到目前为止,我在CREATE TABLE statement尝试了不同的数据types。 我尝试SQL datatypes (int,bigint,money,datetime,bit,nvarchar和xml是我的数据库使用最多的),我也尝试了几个Excel-specific datatypes以及几个OleDB特定的Excel-specific datatypes ,但没有成功。 数据被写入文件,但是列保持格式化为默认值。

一些详细信息:

 String AceConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + "; Extended Properties=\"Excel 8.0; HDR=YES; IMEX=0; READONLY=FALSE;\""; //filename is the target xls file **example CREATE TABLE statement (with SQL datatypes for the fields)** CREATE TABLE [Report22.10.2013 14:45] ([IDKatalog] Int, [KatalogName] NVarChar(255), [Tabellenname] NVarChar(255), [KomplettUpdate] Bit, [IDLieferant] Int, [FreigabeVon] NVarChar(255), [FreigabeVonEMail] NVarChar(255), [IDKatalogAS] Int) 

是否可以使用OLEDB设置阵型? 我知道你不能改变像颜色,字体,宽度等数据表示,但我可以确定单元格格式吗?

我不确定是否可以在OLEDB中执行此操作,但可以使用Powershell或VBA完成。 以下是来自微软的参考资料。

 Worksheets("Sheet1").Range("A17").NumberFormat = "General" Worksheets("Sheet1").Rows(1).NumberFormat = "hh:mm:ss" Worksheets("Sheet1").Columns("C"). _ NumberFormat = "$#,##0.00_);[Red]($#,##0.00)" 

http://msdn.microsoft.com/en-us/library/office/aa224873%28v=office.11​​%29.aspx

如果您不想使用Powershell,也可以尝试预先制作带有正确格式信息的模板文件,然后使用OLEDB填充该文件并将填充的表格保存为其他内容。