2011-03-17 67 views
2

我使用C#導入Excel列鑄件。但CustomerOrderNR列包含這些類型的值:OleDbDataAdapter的同時導入Excel以ASP.NET

20283 
20213 
20625 
50749-50 
30687 
31975 
82253 

但是,當我執行這些代碼:

string QTam = @"SELECT Date, [Serial Number], [Status Code], Description, CustomerOrderNR FROM [Sheet1$]"; 

    DataSet ds = new DataSet(); 
    OleDbDataAdapter cmd = new OleDbDataAdapter(QTam, strConn); 
    cmd.Fill(ds, "orders"); 

它在System.Double數據類型返回CustomerOrderNR列。 我想改變的數據表列的類型,但隨後返回像例外:

Cannot change DataType of a column once it has data. 

無法從雙在SQL語句更改列的數據類型爲String?

+0

它所在Excel中列的類型?如果它是一般的,你可能想明確地將其設置爲文本... – 2011-03-17 15:56:33

回答

2

我不知道如何可以強制數據類型的SQL,但你可以通過克隆數據集架構後恰克數據集中的數據類型,數據與ImportRow複製。

反倒是你應該在Excel中,如果你想要把它當作字符串有可能發生變化的數據類型爲字符串。在Excel中

2

看看你的連接字符串。您可能需要包含ISAM = 1,以便excel知道如何處理混合列作爲文本。

0

,如果你有場及其預期的數據類型的預定列表,我認爲,這應該是最易維護的方法:

創建一個XML架構如下:

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="Table"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Field1" type="xs:int" minOccurs="0" /> 
       <xs:element name="Field2" type="xs:string" minOccurs="0" /> 
       <xs:element name="Field3" type="xs:date" minOccurs="0" /> 
       <xs:element name="Field4" type="xs:double" minOccurs="0" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

和閱讀:

string query = "SELECT Field1, Field2, Field3, Field4 FROM [" + row["TABLE_NAME"].ToString() + "]"; 

DataSet ds = new DataSet(); 
ds.ReadXmlSchema(@".\MySchema.xsd"); 
OleDbDataAdapter data = new OleDbDataAdapter(query, Connection); 
data.Fill(ds); 
ds.Tables[0].TableName = row["TABLE_NAME"].ToString().Replace("$", string.Empty);` 

掣在於日期格式具有用於系統設定是有效的是在短的日期爲「DD/MM/YY」

一旦設置了類型,您可以根據需要進行格式化。