簡體   English   中英

VB.Net:以文本形式寫入Excel工作簿

[英]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值是Date7/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM