刚学C#,用VS2017,请问接下来怎么做?

书上说编译后,运行。请问编译按钮在哪?图片说明

0

11个回答

还有,你main要大写,不同于C++

3

ctrl+f5,或者项目-生成并运行(我不用中文版,大概是这个意思,你找下)

1
weixin_42298314
Memories of vs创建编译时注意选择相应的控制台
一年多之前 回复
weixin_42298314
Memories of 一般新建文件有快捷键按Ctrl+Shift+N
一年多之前 回复
weixin_42298314
Memories of 请严格区分大小写,代码写完以后可以按Ctrl+F5进行调试,或者点击上方的调试按钮进行调试
一年多之前 回复
whyyouhitme_
whyyouhitme_ 啊,打开project就可以了,谢谢
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复whyyouhitme_: 在程序结尾的地方加上一行Console.ReadKey()让程序停下。
一年多之前 回复
whyyouhitme_
whyyouhitme_ 回复caozhy: 嗯,可以了,但是关闭后,再次打开源文件,ctrl+f5又没反应了。直接双击应用程序又会闪退。这怎么办
一年多之前 回复
weixin_42295506
也行 Ctrl+F5
一年多之前 回复
weixin_42295426
白小福 回复whyyouhitme_: 555
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复whyyouhitme_: 你怎么创建的是文件呢。你点文件-新建,创建一个C#控制台应用程序
一年多之前 回复
qq_35055964
下雨天1993118 是的需要操作的
一年多之前 回复
whyyouhitme_
whyyouhitme_ ctrl+f5没反应,闪都不闪
一年多之前 回复

C#项目的最小编译单位是项目,也就是csproj
一个解决方案可以有n个项目
每个项目可以单独编译,得到exe或者dll
每个项目可以包含1个,也可以包含n个cs文件。

0

你没有主函数,然后运行按图中绿色按钮

0

正常新建工程类都会自己创建Main函数,只需要再内部编写代码就可以,运行和正常软件一样,找箭头按键绿色的就是,或者使用快捷键操作ctrl+F5

0

下载visual studio install然后选择(通用windows平台开发和.net桌面开发)就可以了。
如果只是需要学习c#,最快捷的方法是下载.netcore2.0,都不需要下载vs2017。
不过这样没有IDE,所以可以安装vs code就搞定一个轻量级的开发环境了。

0

新建工程的时候要选控制台应用程序,而不是只建一个.cs文件、

0

直接用快捷键吧,shift+F6编译,shift+F5调试

0

先右击解决方案--生成解决方案;然后按F5进行调试

0

图片说明

0
共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
接下来怎么做?
一直都是从事的网站开发的工作.rnrn想提升一下自己的能力,所以想学学软件开发.C++,basic,java等语言的基础知识还是有的.这个月来也看了些关于VB.net的书.但看得我倒懂不懂的.rnrn照我的理解,做一个桌面软件,不外乎就是三种东西,一是界面,二是数据库,三是远程.应该这三种就是构成一切信息系统的基础的了.ADO.net我看过了,会用了.远程我看了Socket的tcplisenter和tcpclient.也知道了多线程.rnrn那我现在接下来该怎么做??是不是自己找些小程序来做做熟悉一下??或者在网上找找别人做的成熟软件的源代码来看看??
刚学qt请问大神们vs2017在哪里编写代码?
看的书是C++ GUI Qt4 里面的第一段程序不知道怎么编写,随便打开了个QT项目。找不到头文件[img=https://img-bbs.csdn.net/upload/201801/16/1516088328_420009.png][/img]
刚学C#!!!
string str ="server=127.0.0.1;uid=lx;pwd=49513;database=woff.net";rn SqlConnection conn=new SqlConnection(str);rn conn.Open();rnrn //读出数据rnrn string sql="select * from pianname";rn DataTable dv;rn DataSet ds=new DataSet();rn SqlDataAdapter da=new SqlDataAdapter(sql,conn);rn da.Fill(ds,"table1");rn dv=ds.Tables("table1");rn DataGrid1.DataSource=dv; rn DataGrid1.DataBind();rnrnrnrn上面dv=ds.Tables("table1");有问题 说是rnrnF:\web\c_test\WebForm1.aspx.cs(65): “System.Data.DataSet.Tables”表示“属性”,此处应为“方法”rnrnrn我不知道该怎么写了!在VB。NET 都可以的???rn
刚学C#的新手
想问下,如何学期比较好。买了本书,从类和变量、表达式的,一路看过去是 懂。但是还没自己的思路编写个程序,请问有什么好点的学习方法吗
新手,刚学C#
请问怎样在新建工程的时候,去掉那些讨厌的注释啊
刚学c#,请问关于数据定义
class MyClass rn rn int integer; rn public int Integer rn rn get return _integer; rn set _integer=value; rn rnrnrn这里定义一个变量为什么要弄个set, get? 里面的_integer是什么意思?觉得怎么一个变量要这么多行啊
刚学C,请问?
刚学C,请问? rnfor (; ;)rnrn...rnrn是什么意思?rn
学了C+GTK了,接下来怎么做。
挺迷茫的...我C语言学完了,GTK的界面怎么做,函数回掉啊,什么的都没问题,但要真正编个实际可以用的东西要怎么做?rnrn用GTK建一个界面是没问题了,但真正要做出一个有用的程序究竟还要看什么?
刚学C#,请问继承时的override
如题:rn看下面代码:rnpublic class personrn private string name;rn public virtual string Namern getreturn name;rn setname=value;rn rnrnpublic class student:personrn public override string Namern setbase.Name=value+"[HORSE]";//请问这里为什么是base.Name而不是name呢rn rnrn rn
刚学java,请问。。。
// Test.javarnimport java.util.*;rnrnpublic class Testrn public static void main(String[] args)rn System.out.println(new Date());rn Properties p = System.getProperties();rn p.list(System.out);rn System.out.println("--- Memory Usage:");rn Runtime rt = Runtime.getRuntime();rn System.out.println( "Total Memory = " +rn rt.totalMemory() +rn " Free Memory = " +rn rt.freeMemory() );rn rnrnrnC:\Java Files>javac test.javarnrnC:\Java Files>java test.classrnException in thread "main" java.lang.NoClassDefFoundError: test/classrnrn为什么运行不了?
请问用C#怎么做曲线图?
请问用C#怎么做用户排名曲线图?rn不需要自己手写的代码,那种可能不是很美观rn大家都是用OWC做吗?rn能不能提供一套OWC画图的代码啊?
接下来该怎么做?
我想在程序运行时使用户能够选择数据库备份的目录,并且程序能够得到用户选择的目录名。 int ret2=MessageBox("你真的备份数据库吗?这样会清除现有的数据!""确认询问",MB_YESNO);rn if (ret2=IDYES)rn谢谢。rn
接下来该怎么做
我看了一寒假的JAVA了,回来学校,现在想上机实践一下.可是,不知道该怎么做,要安装什么程序什么的吗,哪个大哥帮帮忙吧!(请写得详细明了,你知道我很笨哦,thanks)rn
C++接下来如何学
学过C++ primer和孙鑫的VC++视频!接着来该学什么?如果走Linux平台应该如何学?Windows平台又该如何?还有C++主流是做哪些开发的?我至今不是很清楚,目前只知道可以做游戏、图像处理和服务器端相关!请大牛们详细解惑下!
接下来该学什么
我现在大二,由于全部时间都发在java上,学了J2SE,JDBC,JSP,JavaScript,Struts1和Struts2,Hibernate,Spring,UML,最近正在用S2SH做一个项目,可接下来学些什么了,各位大虾给点建议
接下来学什么??
学完了j2se的基础知识之后该学些什么了?往程序员方面发展的.高手指点.
接下来学什么
大一大二就学了c和c++,大三想做一些有点用的小程序,接下来要学习windows api了吗?看什么书?还需要学其它东西才能做小程序吗?
接下来要学什么?
控件常用的基本了解,接下来要学什么?
刚学C#学的一个学生管理系统
刚学C#学的一个学生管理系统,有没有要啊。留下QQ号或者邮箱。我发给大家啊。
刚学完C,接下来可以用它干点啥啊?
已经大致的学完了C!差不多算入门了!请各位大神给点建议,现在可以用它干点啥有意思的东西不???
刚学C#,有点迷茫.
在网上找资料很少,谁能给我发点有关和SQL Server 连接的列子。rnrn先谢谢了rnrn我的邮箱xutongkui@163.comrnQQ78903076rn
c#刚学,请教高手
using System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnrnnamespace public与私有的运用类2rnrn class Programrn rn static void Main(string[] args)rn rn Class1 student = new Class1();rn student.show();rn student.stName = Console.ReadLine();rn student.stAge = Convert.ToInt32(Console.ReadLine());rn int stuo = Convert.ToInt32(Console.ReadLine());rn student.stno(stuo);rn student.stSex = "男";rn student.stpwd("2011123011");rn student.jieguo();rn Console.ReadKey();rn rn rnrn class Class1rn rn public string stName;rn public int stAge;rn public string stSex;rn private int stNo;rn private string stPwd;rnrn public int stno(int st_no)rn rn if (stNo < 0)rn rn Console.WriteLine("请输入真确的年龄!谢谢合作!");rn rn return st_no = this.stNo;rn rnrn public string stpwd(string st_pwd)rn rn return st_pwd = this.stPwd;rn rnrn public void show()rn rn Console.WriteLine("*********************");rn Console.WriteLine(" Lam制作 ");rn Console.WriteLine("*********************");rn rnrn public void jieguo()rn rn Console.WriteLine("他叫0,性别1,年龄2,学号为3,密码为:4", this.stName, this.stSex, this.stAge, this.stNo, this.stPwd);rn rn rnrnstPwd怎么是为空的?还有stNO为什么是0。为什么我的值,赋值不进去。我明明为stPwd返回值了。rnrnrn
oracle 的存储过程错误处理怎么做?刚学多多关照
rn大家帮忙看看怎么回事!!!rnrncreate or replace procedure importtable isrn--声明变量 rnbcustomerid tf_f_usrarch_main.customerid%type;rnbmphonecode tf_f_usrarch_main.mphonecode%type;rnbsimcardno tf_f_usrarch_main.simcardno%type;rnbopendate tf_f_usrarch_main.opendate%type;rnbassurename tf_f_usrarch_main.assurename%type;rnbassurepid tf_f_usrarch_main.assurepid%type;rnbassurelink tf_f_usrarch_main.assurelink%type;rnbassuretypecode tf_f_usrarch_main.assuretypecode%type;rnbremovetag tf_f_usrarch_main.removetag%type;rnbdestroytime tf_f_usrarch_main.destroytime%type;rnbtradetypecode tf_f_usrarch_main.tradetypecode%type;rnbdepartid tf_f_usrarch_main.departid%type;rnausrname tf_f_customer.usrname%type;rnapassporttypecode tf_f_customer.passporttypecode%type;rnausrpid tf_f_customer.usrpid%type;rnausraddress tf_f_customer.usraddress%type;rnapostcode tf_f_customer.postcode%type;rnalinkhomephone tf_f_customer.linkhomephone%type;rnalinkman tf_f_customer.linkman%type;rncfeesetcode tf_f_usrarch_feeset.feesetcode%type;rn--先找到开户时间和修改时间一样的,insertrn--再找开户时间和修改时间不一样的,updaterncursor cur_equlas_openup is--找到开户时间和修改时间一样的,rnselect b.customerid,rnb.mphonecode,b.simcardno,b.opendate,b.assurename,b.assurepid,b.assurelink,b.assuretypecode,rnb.removetag,b.destroytime,b.tradetypecode,b.departid,rna.usrname,a.passporttypecode,a.usrpid,a.usraddress,a.postcode,rna.linkhomephone,a.linkman,rnc.feesetcodernfrom tf_f_customer a,tf_f_usrarch_main b,tf_f_usrarch_feeset crnwhere a.customerid=b.customerid and c.usrid=b.usrid and rnb.opendate=b.updatetime;rnrncursor cur_def_openup is--再到开户时间和修改时间不一样的,rnselect b.customerid,rnb.mphonecode,b.simcardno,b.opendate,b.assurename,b.assurepid,b.assurelink,b.assuretypecode,rnb.removetag,b.destroytime,b.tradetypecode,b.departid,rna.usrname,a.passporttypecode,a.usrpid,a.usraddress,a.postcode,rna.linkhomephone,a.linkman,rnc.feesetcodernfrom tf_f_customer a,tf_f_usrarch_main b,tf_f_usrarch_feeset crnwhere a.customerid=b.customerid and c.usrid=b.usrid and rnb.opendate<>b.updatetime;rnrnbeginrn--找到开户时间和修改时间一样的,rn open cur_equlas_openup ;rn fetch cur_equlas_openup into rn bcustomerid,bmphonecode,bsimcardno,bopendate,bassurename,bassurepid,rn bassurelink,bassuretypecode,bremovetag,bdestroytime,btradetypecode,bdepartid,rn ausrname,apassporttypecode,ausrpid,ausraddress,apostcode,alinkhomephone,alinkman,rn cfeesetcode;rn while cur_equlas_openup%found looprn--插入rn insert into zwdjdxg z(z.djbh,z.gxcs,z.workerid,z.ywlbid,z.mid,rn z.dhhm,z.dhkh,z.blrq,z.dbr,z.dbrzjhm,rn z.dbrlxdh,z.dbrzjlxid,z.removetag,z.destroytime,z.tradetypecode,z.deptid,rn z.khmc,z.zjlxid,z.zjhm,z.txdz,z.yzbm,z.lxdh1,z.lxr,rn z.tclxid) values(rn bcustomerid,'99','8888','WXGH','SH002',rn bmphonecode,bsimcardno,bopendate,bassurename,bassurepid,rn bassurelink,bassuretypecode,bremovetag,bdestroytime,btradetypecode,bdepartid,rn ausrname,apassporttypecode,ausrpid,ausraddress,apostcode,alinkhomephone,alinkman,rn cfeesetcodern );rnrn commit;rn--错误处理rn EXCEPTIONrn WHEN DUP_VAL_ON_INDEX THEN rn--插入日志rn insert into aaaa(aaaa,bbbb) values ('ss','ss01');rn rn end loop;rn --再到开户时间和修改时间不一样的,rn open cur_def_openup ;rn fetch cur_def_openup into rn bcustomerid,bmphonecode,bsimcardno,bopendate,bassurename,bassurepid,rn bassurelink,bassuretypecode,bremovetag,bdestroytime,btradetypecode,bdepartid,rn ausrname,apassporttypecode,ausrpid,ausraddress,apostcode,alinkhomephone,alinkman,rn cfeesetcode;rn while cur_def_openup%found looprn insert into zwdjdxg a select * from zwdjd b where b.djbh=bcustomerid;rn delete from zwdjd b where b.djbh=bcustomerid;rn rn update zwdjdxg z set rn z.dhkh=bsimcardno,z.blrq=bopendate,z.dbr=bassurename,rn z.dbrzjhm=bassurepid,z.dbrlxdh=bassurelink,z.dbrzjlxid=bassuretypecode,rn z.removetag=bremovetag,z.destroytime=btradetypecode,rn z.tradetypecode=btradetypecode,z.deptid=bdepartid,rn z.khmc=ausrname,z.zjlxid=apassporttypecode,z.zjhm=ausrpid,rn z.txdz=ausraddress,z.yzbm=apostcode,z.lxdh1=alinkhomephone,z.lxr=alinkman,rn z.tclxid=cfeesetcode rn where z.djbh=bcustomerid;rn end loop;rnend importtable;rnrnrn问题在于我写那段异常处理的时候执行不过去!!
大神帮忙,刚学C#
using System;rnusing System.Collections.Generic;rnusing System.Text;rnusing System.Reflection;rnnamespace ch1226FanShernrn class Programrn rn public static void Main(string[] args)rn rn string testclass = "System.Refection.ProperInfo";rn Console.WriteLine("\nFollowing is the member info for class: 0",rn testclass);rn Type MyType = Type.GetType(testclass);//存储类型的类型rn //MemberInfo [] Mymemberinforra = MyType.GetMembers();//获取类型包含的成员rn MemberInfo[] Mymemberinforray = MyType.GetMembers();rn Console.WriteLine("\nThere are 0 members in 1",rn Mymemberinforray.GetLength(0),rn MyType.FullName);rn for (int counter = 0; counter < Mymemberinforray.GetLength(0); counter++)rn rn Console.WriteLine("0--1 Member type --2",rn counter, Mymemberinforray[counter].Name,rn Mymemberinforray[counter].MemberType.ToString());rn rn rn rnrn会报错误:rn 未处理的异常: System.NullReferenceException: 未将对象引用设置到对象的实例。rn 在 ch1226FanShe.Program.Main(String[] args) 位置 E:\C#\ch1226FanShe\ch1226FanrnShe\Program.cs:行号 16rn怎么修改……
刚学C#,求源程序!
因环境条件等原因,求一个C#操作ACCESS数据库或SQL Server数据库超级简单但功能完整的Windows窗体程序学习。因刚学C#请不要删除注释,要不然看不懂。同时如果您有这个小程序的开发心得也给我一份。您的帮助会使我进步的更快,谢谢!rnrnEMAIL:iwebemail@yahoo.com.cn
刚学C#,菜鸟请教!
[code=C#]using System;rnusing System.Collections.Generic;rnusing System.Text;rnrnnamespace interface_jichenrnrn public interface IBankrn rn void PayIn(float count);rn bool withdraw(float count);rn float Transfercountrn rn get;rn rn rnrn public interface ITransferBankAccount : IBankrn rn bool TransferTo(IBank destination, float amount);rn rnrn public class CurrentAccount : ITransferBankAccountrn rn private float balance;rn public void PayIn(float amount)rn rn balance += amount;rn rnrn public bool withdraw(float count)rn rn if (balance >= count)rn rn balance -= count;rn return true;rn rn Console.WriteLine("账面出错了");rn return false;rn rnrn public float Transfercountrn rn getrn rn return balance;rn rnrn rnrn public bool TransferTo(IBank destination, float amount)rn rnrn bool result;rnrn if ((result = withdraw(amount)) == true)rnrn destination.PayIn(amount);rnrn return result;rnrn rnrn public override string ToString()rn rnrn return String.Format("当前账目结余 = 0,6:C",balance);rnrn rnrn rnrn public class BankA : IBankrn rn private float transfercount;rnrn public BankA()rn rn Console.WriteLine("继承自IBank的BankA");rn rnrn public void PayIn(float count)rn rn transfercount += count;rn rnrn public bool withdraw(float count)rn rn if (transfercount >= count)rn rn transfercount -= count;rn return true;rn rn Console.WriteLine("账面出错了");rn return false;rn rnrn public float Transfercountrn rn getrn rn return transfercount;rn rn rnrn public override string ToString()rn rn return string.Format("Bank 结余:Transfercount = 0,6:C", transfercount);rn rn rnrn class Programrn rn static void Main(string[] args)rn rn [color=#FF0000]IBank[/color] Account = new [color=#FF0000]BankA();[/color] //请问这个实例化前后名怎么不一样的啊rnrn [color=#FF0000]ITransferBankAccount[/color] AccountB = new [color=#FF0000]CurrentAccount();[/color]////请问这个实例化前后名怎么不一样的啊rnrnrn Account.PayIn(200);rnrn AccountB.PayIn(500);rnrn AccountB.TransferTo(Account, 100);rnrn Console.WriteLine(Account.ToString());rnrn Console.WriteLine(AccountB.ToString());rn rn rn[/code]
刚学C#,菜鸟问题!!!!!!!
请问C#.net中怎么实现类似C/C++中的头文件和源文件的关系,我想让在主窗体中申明的数据集和一些函数在他的子窗口中也能使用,请问应该怎么做?麻烦详细点(每一步操作)请指教,谢谢
刚学c#,紧急求助
1.c#里面有GetObject吗,怎么用?rn2.如查找一个进程是否存在,如果存如何获取他的路径等信息?
刚学C#,菜鸟问题,
rn <%=classdb.operate.showBig(DataBinder.Eval(Container.DataItem,"type_list"))%>rn" border="0">rn rnrn如果是DataBinder.Eval(Container.DataItem,"type_list"),代码能正常执行,但我写了个showBig,要把它转换一下,我不知道用怎么样的方法,请高手指教,rn还有一个TD是一个图片的地址,但有时候图片可以不上传,我想加个判断,应该写个方法,但小弟是初学,请大虾们指教,谢!rnrn
请问 刚学UNIX应该学什么?
我一点 UNIX都没有接触过 rn有没有那位大侠 教教我rnrnrn小女子 感谢了
一道考试题。刚学的C#的。
假设有一段程序对字符串进行加密,加密后的字符串的第一个字符是原字符串的最后一个字符,其余的每个字符是对应的原字符串中的前一个字符的值加上3。比如“welcome”,末尾的字符为“e”,“welcom”依次加上3后成为“zhofrp”,故加密后的结果为“zhofrp”。程序由用户任意输入一个字符串,加密后输出。
刚学C#的菜鸟--lable
我想设置一个lable,只在点击一个按钮时才显示,且只显示3次。再设置一个timer让lable现设两秒后消失。rn第一次点击后显示:还可以点击两次。rn第二次点击后显示:还可以点击一次。rn首先将lable的visible设置为false,然后什么样的方法才能让里面的内容里面即可以带文字,又可以带次数呀?rnstring str = "";rnstr += string.Format("你还有0次机会", logintimes);rnLable.Show(str);最后一句有问题,请问该怎么写呀,麻烦大家帮忙解答一下,谢谢!
刚学C#,问个问题求助!
在控制台Console.ReadLine();但要求填写的只能是数字,应该怎么写或有什么命令吗??
刚学MIDAS,请问一般人
我想学MIDAS的开发,请高手指点学习的方法。能不能在一台机子 上学习呢,怎么学呢
请问一个小问题,刚学!
我在第一个页面提交了一些数据,rn在第二个页面获取到了,用了getParameter()的方法(传过来的值);rn现在我要在第三个页面获取第二个页面取得第一页页面的那些值,不用sessionrn用什么方法,应该有一个函数吧!rn请教!
菜鸟,刚学vb请问.
正在学vb,rn有个例子,按照书本打的程序rn调试的时候说rnIf db.ConnectionString <> "" Thenrn这里错了,rn我也不知道为什么,请问那个大师能说说?rn谢谢
刚学struts,请问配置问题?
刚学struts,请问java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagExtraInfo是什么意思?rn需要什么样去配置正确运行,不出现如上问题,谢谢!!
学完51单片机了,接下来该学什么?
本人是电气工程及其自动化专业学生,现在上大三,毕业后打算直接就业。已经学完51单片机了,接下来该学什么,求指点。
catch了异常,接下来要怎么做?
rn如果在前面的代码中我使用socket通信,我已经申请了socket的端口号,在朝socket中写入数据的时候出了一些错误, 例如 : 内存分配失败, 并且我必需需要点内存来供我把数据格式化完毕后,写进SOCKET里,结果现在出错了,那么接下来我要怎么去做?rnrn如果说我应该去把这个socket端口给释放掉是正解的话,那么对于一个庞大的项目,负责模块A的人可能永远都不知道模块B里面申请了哪些临界资源? 那么要如何去作?rnrn
接下来怎么学编程呢?
C语言书我只看过三本:哥哥从大学带回来的《C语言程序设计第三版》(大概这个名字)rn 哥哥同学的《C语言???300例》rn 谭浩强的《????》反正和第一本差不多,我没看多少。rnrn因为用的编译环境是VS2008(D版,只有VC),怀着憧憬,设计了个用socket实现简单通讯的东西。于是一发不可收拾。因为那东西的需要,学了点API。rn前几天心血来潮,写了个鼠标坐标颜色抓取工具,对Windows消息有有点点了解。rn我去看了看《windows API 一日一练》。rn可是一看完就不知道做什么了。rnrn想学,但不知道怎么学、从哪里学。rn总觉得自己在电脑前无所事事地玩,心血来潮就写个程序,很浪费时间,而且学习效率特低。rnrn我哥哥告诉我看完谭浩强的C可以学Windows编程,可是我找不到教材。rnrn谁能给一些帮助?
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑