[英]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.