C# 保存Excel数据及文件

真没想到发个文章,格式这么难

BetweenWfile是待保存数据,

fileName是待保存文件路径

有借鉴别人动态改变单元格宽度,但是记不清是借鉴的哪位大佬的了

#region 保存、读取以及输出excel文件

        /// <summary>
        /// 保存excel并输出
        /// </summary>
        /// <param name="writefile"></param>
        public void inputFileView(ArrayList BetweenWfile, string fileName)
        {
            string[] FinalWfile;
            //创建工作薄
            HSSFWorkbook wk = new HSSFWorkbook();
            //创建一个名称为scoringSheet的表
            ISheet score = wk.CreateSheet("scoringSheet");
            IRow row = score.CreateRow(0);
            //创建数据后
            for (int i = 0; i < BetweenWfile.Count; i++)
            {
                int x = i + 2;
                row = score.CreateRow(x);
                FinalWfile = BetweenWfile[i].ToString().Split(Environment.NewLine.ToCharArray());
                for (int j = 0; j < FinalWfile.Count() && j < 255; j++)
                {
                    ICell cell = row.CreateCell(j);//在第X行中创建单元格
                    cell.SetCellValue(FinalWfile[j]);//循环往第X行的单元格中添加数据
                }
            }
            int columnWidth = score.GetColumnWidth(0) / 256;//获取当前列宽度  
            for (int rowNum = 2; rowNum <= score.LastRowNum; rowNum++)//在这一列上循环行  
            {
                IRow currentRow = score.GetRow(rowNum);
                ICell currentCell = currentRow.GetCell(1);
                if (currentRow.GetCell(0) != null) { currentCell = currentRow.GetCell(0); }
                int length = Encoding.UTF8.GetBytes(currentCell.ToString()).Length;//获取当前单元格的内容宽度  
                if (columnWidth < length)
                {
                    columnWidth = length;
                }//若当前单元格内容宽度大于列宽,则调整列宽为当前单元格宽度,后面的+1是我人为的将宽度增加一个字符  
            }
            score.SetColumnWidth(0, columnWidth * 180);
            //}
            using (FileStream fs = File.OpenWrite(fileName + @"\" + "scorexls.xls")) //打开一个xls文件,如果没有则自行创建,如果存在scorexls.xls文件则在创建是不要打开该文件!
            {
                wk.Write(fs);   //向打开的这个xls文件中写入mySheet表并保存。
            }

        }

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值