【问题标题】:DataTypes when creating an xls worksheet with OLEDB使用 OLEDB 创建 xls 工作表时的数据类型
【发布时间】:2013-10-22 12:54:01
【问题描述】:

我有一个ASP.NET 4.0 web app,它将数据从SQL Server 2008 R2 读取到DataSet。现在我想将此数据写入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 设置队形?我知道您无法更改颜色、字体、宽度等数据表示,但我可以确定单元格格式吗?

【问题讨论】:

    标签: c# asp.net sql-server excel oledb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多