[英]VB.Net: Writing To Excel Workbook as Text
我寫了以下功能...
Public Function writeAUTLSheet(doc As XDocument, myNameSpaces As Dictionary(Of String, XNamespace), theSheet As Excel.Worksheet)
'Grab the number of the last row to not overwrite
Dim rowNumber As Integer = getLastRow(theSheet)
For Each myName As XElement In doc.Descendants.Elements(myNameSpaces("ns4") + "autl")
theSheet.Cells(rowNumber, 1) = doc.Descendants.Elements(myNameSpaces("ns") + "number").Value
theSheet.Cells(rowNumber, 2) = myName.Descendants(myNameSpaces("ns") + "id").Value
theSheet.Cells(rowNumber, 3) = myName.Descendants(myNameSpaces("ns") + "name").Value
rowNumber = rowNumber + 1
Next
End Function
它可以按預期運行,但是有些值寫為“ General”,而另一些值寫為“ Date”。 這導致將諸如07-2-3018之類的值轉換為7/2/3018。 然后,如果我將該單元格更改為“文本”或“常規”(手動),它將變為“ 408525”。
有沒有一種方法可以指定我希望將其寫為文本以實現被寫入07-2-3-18?
正如您所觀察到的那樣,當您放置可能是字符串或日期的數據時,Excel會對其進行處理,因為它無法知道您提供的數據是一種類型還是另一種類型。
通常,任何可以解釋為Date
類型的東西都將被解釋為Date
類型。 因此,1/1/ 1/1/2017
是有效日期,但13/47/5047
無效,因此Excel將后者視為字符串文字,將前者視為Date
類型。 如果將值視為Date
,則它也是Long
數字。 408525
值是Date
值7/2/3018
的長數字表示。
您的Cells
對象應該有一個NumberFormat
屬性(這是一個Excel.Range
類型),但是NumberFormat
不會更改基礎值 ,而是對值的解釋,這使Excel感到困惑並導致它表示類似日期的值值作為日期。
您始終可以在單元格值前加上撇號,這將迫使Excel解釋為字符串,例如:
theSheet.Cells(rowNumber, 2) = "'" + myName.Descendants(myNameSpaces("ns") + "id").Value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.