使用 OLEDB 创建 xls 工作表时的数据类型
本文关键字:数据类型 工作 OLEDB 创建 xls 使用 | 更新日期: 2023-09-27 18:36:33
我有一个ASP.NET 4.0 web app
,它可以将数据从SQL Server 2008 R2
读取到DataSet
中。现在,我想将此数据写入xls
文件 (Office 2003)。目前,我使用 CREATE TABLE
创建一个空工作表,并使用 insert 语句将数据逐行写入其中。但我真正想要的是 excel 文件中的列词根据数据集中的 datatyp 进行格式化。例如,如果数据集中的字段是 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
设置阵型?我知道您无法更改颜色、字体、宽度等数据表示形式,但我可以确定单元格格式吗?
我不确定是否可以在OLEDB中执行此操作,但肯定可以使用Powershell或VBA来完成。以下来自Microsoft的参考。
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 填写该信息并将填充的工作表另存为其他内容。