我將展示一些人爲的例子,請耐心等待。應用函數後保持單元格文本格式化
我們的產品利用CSV文件創建過渡數據,在Excel用戶界面和Java程序之間發送數據,並將其轉移到SQL後端。我們有一個VBA腳本,可按以下順序處理所有Excel工作:
在單個Excel文檔中將所有8個CSV文件加載到8個工作表中。然後通過數據執行以下操作的批次迭代:
'Loop over data:
Dim r As Range
...
r.NumberFormat = "General"
r.Formula = r.Formula
'End loop
這會導致整個片材與來自CSV數據來填充,用數目的細胞具有文本的外觀和Excel公式保持未計算的。運行r.Formula = r.Formula觸發所有函數進行正確評估。唯一的問題是數字格式。
CSV文件有時包含嵌套的CSV。例如,單個單元格可能包含「1,2,3,15,654」這些單元格始終顯示爲文本。但是,有一個邊緣情況,其中單元格可能是漂亮的打印數字,例如「10,456,345」Excel將在評估所有函數後將這些數字轉換爲數字單元格,並刪除所有逗號。儘管文檔中的20,000行左右是正確的,但這影響了4行左右,從而打破了整個系統。
有沒有辦法觸發Excel來評估從CSV的功能,而不必完全從VBA中更改單元格格式?由於Java CSV生成器由不同的部門處理,因此將格式從CSV更改爲SYLK不是一種選擇。
是否指CSV文件包含Excel公式(例如,「= R1C1」或「= A1」)? – assylias 2012-02-14 16:47:03
您是否嘗試過使用'r.NumberFormat =「@」'將單元格定義爲文本? – 2012-02-14 16:52:12
@assylias是的,它包含Excel公式。 Java程序根據需要生成正確的公式,並在正確的位置生成CSV文件。 r.Formulas = r.Formulas觸發它們進行評估。 – Reivax 2012-02-14 18:02:01