簡體   English   中英

使用vb.net作為字符串從單元格中提取Excel公式

[英]Extracting Excel formulas from cells using vb.net as strings

這有多難……或者我想。 我想做的是提取給定工作表中一系列單元格的值,顏色,注釋和任何公式。 最終目標是將已經用作數據庫的電子表格轉換為Access表。

worksheet.Cells(row,column).Value '提取值工作量
worksheet.Cells(row,column).Font.ColorIndex '提取顏色索引
worksheet.Cells(row,column).Comment.Text '提取評論
worksheet.Cells(row,column).Formula '提取公式不起作用

.Formula的返回值與.Value相同。 那不是我所需要的。 我正在尋找公式的文本表示形式(以提取公式中嵌入的匯率信息)。

感謝David在VBA中測試代碼。 在發布問題之前,我應該這樣做。

更新:我使用VBA測試了代碼。 有用。 所以我回到我的VB.Net代碼,發現了問題。 我認為VB.Net屬性中存在一個錯誤,這就是原因。

我有一個類ExcelSheet,其中包含對Excel.Worksheet的引用。 它實現了一個索引器[row,colum],該索引器返回另一個類ExcelRange,該類保留對Excel.Range的引用。 我注意到的錯誤是,第一個MsgBox將公式顯示為字符串表示形式,而第二個MsgBox顯示評估數據。 我的快速解決方案是在構造函數中捕獲公式。

Private myCell As Excel.Range  
Private myFormula As String  

Friend Sub New(ByRef cell As Excel.Range)  
myCell = cell  
MsgBox(myCell.Formula,,"Constructor") 'Displays formula as string  
myFormula = myCell.Formula 'Saving formula as string  
End Sub

Public ReadOnly Property Formula() As String  
  Get  
    MsgBox(myCell.Formula,,"Property") 'Displays evaluated data  
    Return myFormula 'Return formula saved as string in constructor  
  End Get  
End Property

這解決了我的問題,但是我很好奇為什么VB.Net會這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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