我有这个代码(这是真实代码的简化版本),它打开excel并设置单元格的值.请注意,我在意大利,我们使用,而不是.分隔十进制数字.这意味着我在代码中使用了12.5,但是ToString()这个数字的结果是"12,5",Excel也显示了12,5.
using Xls = Microsoft.Office.Interop.Excel;
public class ExcelTest
{
public static void Test
{
object hmissing = System.Reflection.Missing.Value;
// create an instance of Excel and make it visible
Xls.Application anApp = new Xls.ApplicationClass();
anApp.Visible = true;
// add an empty workbook
Xls.Workbooks wbks = anApp.Workbooks;
wbks.Add(hmissing);
Marshal.ReleaseComObject(wbks);
// set the value of the first cell
Decimal d = 12.5m;
Xls.Range aRange = anApp.get_Range("A1", hmissing);
aRange.set_Value(Xls.XlRangeValueDataType.xlRangeValueDefault, d.ToString());
Marshal.ReleaseComObject(aRange);
}
}
Run Code Online (Sandbox Code Playgroud)
使用.NET 2,一切都运行良好多年,但当我尝试切换到.NET 4 Excel时,警告我该数字已存储为文本 …
我有一个框架,其中包含许多基类,可以派生它们来开发许多应用程序.在这些类中有一个System.Windows.Forms.Panel的子类,我为它编写了自己的设计器.Visual Studio 2005一切正常,但当我尝试迁移到VS2010时出现问题.这是我正在做的简化版本:
我有一个名为CoreClasse的项目,它包含一个接口和两个类:
public interface IConf
{
string foo { get; set; }
void InitFoo();
}
public class SimpleClass
{
public string foo;
}
public class ConfLoader
{
public static IConf LoadConf()
{
AssemblyName anAssemblyName = new AssemblyName("ConfClasses");
Assembly anAssembly = Assembly.Load(anAssemblyName);
IConf result = (IConf)anAssembly.CreateInstance("ConfClasses.ConfClass");
result.InitFoo();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
然后有一个项目ConfClasses引用CoreClasses并且只包含一个实现IConf的类:
public class ConfClass : IConf
{
public SimpleClass confVal;
public string foo
{
get { return confVal.foo; }
set { confVal.foo = value; }
}
public void …Run Code Online (Sandbox Code Playgroud)