簡體   English   中英

如何使用C#在Excel 2003中將文本值轉換為數字值(數字存儲為文本)

[英]How to convert Text values to number values in Excel 2003 (Number stored as Text), using C#

似乎有很多建議可以做到這一點,但沒有一條可行。

實際上,我想將Excel工作表中的文本值更改為數字(此單元格已設置為存儲為文本的數字,並且旁邊有綠色菱形)。

網頁詳細介紹了如何通過用戶界面在Excel中解決問題,並將其記錄為下面的宏(但這是VBA)...

包括將值設置為其自身:

                Range allCellsRng;
                string lowerRightCell = "AZ500";
                allCellsRng = wSheet.get_Range("A1", lowerRightCell).Cells;
                foreach (Range cell in allCellsRng)
                {
                    if (cell.Value2.ToString().Length > 0)
                    {
                        cell.Value2 = cell.Value2;
                    }
                }

這是一個記錄的VB宏,它顯示了解決該問題的方法,但是在C#中存在表示此問題:

ActiveCell.FormulaR1C1 = "0"
Range("A1").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
    :=False, Transpose:=False
Range("A1").Select

使用Clear Office,代碼非常簡單:

SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName);
foreach (Worksheet worksheet in spreadsheetDocument.Workbook.Sheets.OfType<Worksheet>())
{
    foreach (Cell cell in worksheet.GetRange("A1:AZ500"))
    {
        string s = cell.Value as string;
        if (s == null)
            continue;
        double d;
        if (double.TryParse(s, out d))
            cell.Value = d;
        }
    }
spreadsheetDocument.Save();

改為更改單元格的格式會更好嗎? 我相信您應該可以使用以下格式

range.NumberFormat

並將其更改為所需的實際格式...然后,您可以設置整個列或整個工作表的范圍。

好的,因此在這里提出一個問題引起了腦力激盪。 這看起來可行:

Range cellA1 = wSheet.get_Range("A1", System.Type.Missing);
cellA1.Value2 = "0";
cellA1.Copy(System.Type.Missing);
Range cellAll = wSheet.get_Range("A1:AZ500", System.Type.Missing);
cellAll.PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationAdd,
        false, false);

暫無
暫無

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

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