我正在从excel读取行到模型中,并且excel将输入(例如“10%”或“20%”)返回为“0.1”,“0.2”字符串。将该字符串转换为字符串(例如“20%”,“10%”)并避免不必要的转换的最佳方法是什么,以免损失性能?所以只是为了澄清我需要将字符串转换为字符串,但程序显然不让我。我可以将该字符串转换为double,然后将该double转换为使用ToString("#0.##%")
的字符串,但我想知道是否有更快的方法。
这是读取行并将excel列格式化为模型道具类型的代码
static T ReadRow<T>(ExcelWorksheet worksheet, int rowNum)
{
var o = (T)Activator.CreateInstance(typeof(T));
int colNum = 1;
foreach (var p in typeof(T).GetProperties())
{
if (worksheet.Cells[rowNum, colNum].Value != null)
{
p.SetValue(o, Convert.ChangeType(worksheet.Cells[rowNum, colNum].Value, p.PropertyType));
}
colNum++;
}
return o;
答案 0 :(得分:1)
扩展prachi所提供的解决方案,将字符串转换为您想要的结果。
string val = "0.2"; // for reference
string.Format("{0}%", Convert.ToDouble(val) * 100);
答案 1 :(得分:0)
你获得10%为.01的原因是该数字仅存储为.01,当读取excel时,你将得到它的实际存储值。您将其视为10%,因为它在excel中格式化为%。 要读取百分比:10%作为字符串'10%',您必须在阅读时格式化字符串。