码迷,mamicode.com
首页 > Windows程序 > 详细

NPOI操作Excel 005:写入空Excel(Winform版)

时间:2017-07-22 14:24:02      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:生成   sha   end   名称   enter   窗体   stream   dex   guid   

前文写了一个BS版本号的导出Excel的样例(http://blog.csdn.net/yysyangyangyangshan/article/details/47904119)。对于CS版在保存的地方有少许修改。直接看代码例如以下:
   
      private void button1_Click(object sender, EventArgs e)
        {
            //要保存的内容。此处用代码生成的内容,而在实际中能够是数据库读取的,
            //亦或是页面输入的内容

            DataTable dt = new DataTable();

            dt.Columns.Add("序号");

            dt.Columns.Add("姓名");

            dt.Columns.Add("年龄");

            dt.Columns.Add("职位");

            for (int i = 0; i < 5; i++)
            {
                DataRow row = dt.NewRow();

                row["序号"] = i + 1;

                row["姓名"] = "Test" + i;

                row["年龄"] = 25 + i;

                row["职位"] = i % 2 == 0 ? "project师" : "经理";

                dt.Rows.Add(row);
            }
            //为了更好的看怎样使用NPOI。此处显示两行标题。
            //显示标题能够看怎样合并单元格
            string mainTitle = "主标题";

            string secondTitle = "副标题";

            //保存的Excel路径,文件名称用guid生成
            string fileIndex = System.AppDomain.CurrentDomain.BaseDirectory;

            string tempExcel = fileIndex + @"\ExcelFile\{0}.xls";

            tempExcel = string.Format(tempExcel, System.Guid.NewGuid());

            int rowIndex = 0;

            //操作Excel的几个主要对象。此处声明
            HSSFWorkbook workbook = new HSSFWorkbook();

            HSSFSheet sheet = workbook.CreateSheet();

            //row0和row1是两行标题
            HSSFRow row0 = sheet.CreateRow(rowIndex);

            HSSFCell cell0 = row0.CreateCell(0);

            cell0.SetCellValue(mainTitle);

            HSSFCellStyle style = workbook.CreateCellStyle();

            style.Alignment = CellHorizontalAlignment.CENTER;

            HSSFFont font = workbook.CreateFont();

            font.Boldweight = short.MaxValue;

            style.SetFont(font);

            cell0.CellStyle = style;

            //此处合并单元格
            sheet.AddMergedRegion(new NPOI.HSSF.Util.CellRangeAddress(rowIndex, rowIndex, 0, 5));

            rowIndex++;

            HSSFRow row1 = sheet.CreateRow(rowIndex);

            HSSFCell cell1 = row1.CreateCell(0);

            cell1.SetCellValue(secondTitle);

            cell1.CellStyle = style;

            sheet.AddMergedRegion(new NPOI.HSSF.Util.CellRangeAddress(rowIndex, rowIndex, 0, 5));

            //由于列名已经指定。占一行
            rowIndex++;

            //这一行显示表头
            HSSFRow row2 = sheet.CreateRow(rowIndex);

            int row2cellIndex = 0;

            foreach (DataColumn col in dt.Columns)
            {
                HSSFCell cell = row2.CreateCell(row2cellIndex);

                cell.SetCellValue(col.ColumnName.ToString());

                row2cellIndex++;
            }

            rowIndex++;

            //datatable的内容
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                HSSFRow row = sheet.CreateRow(rowIndex);

                foreach (DataColumn col in dt.Columns)
                {
                    row.CreateCell(col.Ordinal).SetCellValue(dt.Rows[i][col].ToString());

                }

                rowIndex++;
            }

            //使用文件流保存
            MemoryStream ms = new MemoryStream();

            workbook.Write(ms);

            ms.Flush();

            ms.Position = 0;

            workbook = null;

            sheet = null;

          

            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "请选择文件路径";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string saveFile = dialog.SelectedPath+@"\TestExcel.xls";

                using (FileStream fs = new FileStream(tempExcel, FileMode.Create, FileAccess.ReadWrite))
                 {
                     ms.WriteTo(fs);
                 }

                File.Copy(tempExcel, saveFile, true);

                MessageBox.Show("导出成功。");
            }

            if (File.Exists(tempExcel))
            {
                File.Delete(tempExcel);
            }

            ms.Close();
        }

使用保存对话框进行保存:
         FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "请选择文件路径";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string saveFile = dialog.SelectedPath+@"\TestExcel.xls";


                using (FileStream fs = new FileStream(tempExcel, FileMode.Create, FileAccess.ReadWrite))
                 {
                     ms.WriteTo(fs);
                 }


                File.Copy(tempExcel, saveFile, true);


                MessageBox.Show("导出成功!");
            }
这样在窗体中也能够实现导出Excel。
project下载:http://download.csdn.net/detail/yysyangyangyangshan/9039017

NPOI操作Excel 005:写入空Excel(Winform版)

标签:生成   sha   end   名称   enter   窗体   stream   dex   guid   

原文地址:http://www.cnblogs.com/mfmdaoyou/p/7221004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!