1

我有一个ASP.NET 4.0 web app将数据从 a 读取SQL Server 2008 R2DataSet. 现在我想将此数据写入xls文件(Office 2003)。目前,我使用创建一个空工作表CREATE TABLE,并使用插入语句将数据逐行写入其中。但我真正想要的是根据数据集中的数据类型格式化 excel 文件中的列。例如,如果数据集中的字段是 system.decimal 类型,我希望将 excel 中的相应列格式化为小数。

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

一些详细信息:

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?我知道您无法更改颜色、字体、宽度等数据表示,但我可以确定单元格格式吗?

4

1 回答 1

0

我不确定是否可以在 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 填写该文件并将填充的工作表另存为其他内容。

于 2013-10-22T16:14:31.473 回答