Как преобразовать текстовые значения в числовые значения в Excel 2003 (число хранится в виде текста), используя 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
3 ответа
Итак, поднятие вопроса как вопроса вызвало волну мозгов. Это выглядит для работы:
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);
С 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
и измените его на нужный вам формат... Затем вы можете установить диапазон для всего столбца или целого листа.