C#学习——SqlSever2Excel

C#(VS2017)

发现了一个小问题,主要是自己理解不清楚。
一、关于System.Web.Mvc.Controller.File
这个方法是可以生成excel的,但是似乎只能由于MVC框架中,我在控制台上使用这个方法是不能使用的。具体为:错误 CS1955 不可调用的成员“File”不能像方法一样使用。
我没有找到解决这个问题的办法。
二、NPOI的使用
前面是的我看的项目中使用的方法,之后发现不行(可能不是MVC的原因)。最后找了这个NPOI的方法。具体方法在:https://www.cnblogs.com/mqxs/p/3372333.html。
这个里面的方法的输出只要以xls结尾就可以了。如果没有路径则自己创立一个路径。简化代码如下:

 static void Main(string[] args)
        {
            string fileName = @"E:\Ceshi0.xls";//自己定义文件,文件不在则自动创立文件
            ExcelTest(fileName);
        }

        public static void ExcelTest(string path)
        {
            IWorkbook workbook = new HSSFWorkbook();//创建Workbook
            workbook.CreateSheet("sheet1");//创建sheet
            using (FileStream fs = File.Create(path))//path=mmm.xls;
            {
                ISheet sheet = workbook.GetSheetAt(0);//获取sheet
                sheet.CreateRow(0).CreateCell(0).SetCellValue("ID");//创建第一行
                sheet.GetRow(0).CreateCell(1).SetCellValue("ParentID");//第二列
                sheet.GetRow(0).CreateCell(2).SetCellValue("Name");//第三列
                sheet.GetRow(0).CreateCell(3).SetCellValue("Url");//第四列
                using (XUEXIEntities ceshi = new XUEXIEntities())
                {
                    //Menu menu = new Menu();
                    var ms = ceshi.Menus;
                    List<Menu> menu0 = ms.ToList();
                    for (int i = 1; i < menu0.Count(); i++)
                    {
                        sheet.CreateRow(i).CreateCell(0).SetCellValue(menu0[i-1].ID);//第一列第i]行
                        sheet.GetRow(i).CreateCell(1).SetCellValue(Convert.ToInt16(menu0[i - 1].ParentID));//第二行第i行              
                        sheet.GetRow(i).CreateCell(2).SetCellValue(menu0[i - 1].Name);//第三行第i列
                        sheet.GetRow(i).CreateCell(3).SetCellValue(menu0[i - 1].Url);//第四行第i列
                    }

                }
                workbook.Write(fs);
                }

此方法生成的excel的是97-03的。似乎(根据网上的)更改HSSF为XSSF即可生成xlsx,最多加上更改ICSharpCode就好了,xls2xlsx。好吧,其实不行。具体解决方式没有找到(懒得查,我不想查了,网上的东西除了github上的我就没发现多少是能把问题讲清楚的,都是脑测)。
三、EPPlus
这个方法比NPOI似乎好一点。具体借鉴网址:https://www.cnblogs.com/rumeng/p/3785748.html
代码就按这个上面的,没有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值