nipo 文件流 excel导入导出

关于 文件流:
每次向文件流中写入数据时,并不是立刻将数据 保存到 文件流对应的硬盘文件,而是当 文件流对象被关闭时或着显示的调用了流对象的Flush方法时,才一次性的将 流对象缓存中 所保存的 数据 写入到对应的硬盘文件。 

#region 04.1读取Excel文件
        /// <summary>
        /// 读取Excel文件
        /// </summary>
        private void btnRead_Click(object sender, EventArgs e)
        {
            string strPath = txtFilePath.Text;//获得 要读取 的 excel文件 路径
            using (Stream file = File.OpenRead(strPath))//将 指定 的 文件 以流的方式读取到 file对象中
            {
                //将 文件流 对象 传入 workbook,此时,workbook 就相当于一个 Excel文件操作对象了
                HSSFWorkbook workbook = new HSSFWorkbook(file);
                //获得 Excel中 第一个工作表的 名字
                //MessageBox.Show(workbook.GetSheetName(0));
                //获得 Excel 中 第一个 表
                HSSFSheet sheet = workbook.GetSheetAt(0);
                //获得最后一行的下标
                int rowNum = sheet.LastRowNum;
                MessageBox.Show(rowNum.ToString());
                //保存整个表的数据
                StringBuilder sbExcelData = new StringBuilder();
                for (int j = 0; j <= rowNum; j++)//循环所有行
                {
                    //每行中所有的列的值
                    string strFirstRow = string.Empty;
                    //获得 当前循环的 行
                    HSSFRow dr = sheet.GetRow(j);
                    //LastCellNum:Gets the index of the last cell contained in this row (PLUS ONE)
                    //最后一行号:获得当前行最后一个单元格的下标 (+1),其实就是获得总列数
                    for (int i = 0; i < dr.LastCellNum; i++)//循环当前行所有列
                    {
                        if (dr.GetCell(i).CellType == HSSFCell.CELL_TYPE_STRING)//如果单元格内容是 字符串
                        {
                            strFirstRow += dr.GetCell(i).StringCellValue + ",";
                        }
                        else if (dr.GetCell(i).CellType == HSSFCell.CELL_TYPE_NUMERIC)//如果单元格内容是 数值
                        {
                            strFirstRow += dr.GetCell(i).NumericCellValue + ",";
                        }
                        //MessageBox.Show(sheet.GetRow(0).GetCell(1).StringCellValue); //.LastCellNum
                    }
                    sbExcelData.Append(strFirstRow + "\r\n");
                }
                MessageBox.Show(sbExcelData.ToString());
            }
        }
        #endregion

        #region 04.2 将数据保存到Excel文件
        private void btnExportExcel_Click(object sender, EventArgs e)
        {
            //在内存中 创建 一个 空的 Excel文件对象
            HSSFWorkbook wb = new HSSFWorkbook();
            //在 Excel文件对象中 添加一个 表格对象
            HSSFSheet sheet = wb.CreateSheet();
            //从数据库获得 所有的 班级数据
            List<MODEL.Classes> list = bllClass.GetAllClasses();
            for (int i = 0; i < list.Count; i++)
            {
                MODEL.Classes model=list[i];
                //为了将 当前循环的班级 实体对象 的数据 写入 excle表格 ,咱们立即创建一个 行
                HSSFRow dr = sheet.CreateRow(i);
                dr.CreateCell(0, HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(model.CID);
                dr.CreateCell(1, HSSFCell.CELL_TYPE_STRING).SetCellValue(model.CName);
                dr.CreateCell(2, HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(model.CCount);
                //保存日期格式数据时 ,将其tostring一下
                dr.CreateCell(3, HSSFCell.CELL_TYPE_STRING).SetCellValue(model.CAddTime.ToString());
            }
            //根据路径 创建一个文件流对象
            using (Stream st = new FileStream(txtFilePath.Text, FileMode.OpenOrCreate))
            {
                //st.Flush()
                //将 内存中 的 Excel文件对象 的内容 通过文件流对象 保存到硬盘中
                wb.Write(st);
                msgDiv.MsgDivShow("保存成功:" + txtFilePath.Text);
            }
        }
        #endregion
    }
}

转载于:https://www.cnblogs.com/xiao-wei-wei/archive/2012/09/14/2685789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值