zoukankan      html  css  js  c++  java
  • NPOI操作Excel 005:写入空Excel(Winform版)

    前文写了一个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
  • 相关阅读:
    直方图有两种类别,等频直方图与等高直方图。
    yangtingkun常数复合索引应用案例
    Using Oracle 10g Tuning Utilities
    Oracle统计信息的备份还原
    ITPUB:分区表,每次查询取出1%的记录,为什么没有走索引?
    ITPUB: Newkid的两个NULL与索引的小技巧
    ORACLE全文检索文件路径版
    分区表、分区索引和全局索引部分总结
    Oracle 10g中的SQL跟踪新方法
    gsoap bug 小记
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7221004.html
Copyright © 2011-2022 走看看