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

来源:互联网 发布:广电直播软件 编辑:程序博客网 时间:2024/06/04 23:35
前文写了一个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 ? "工程师" : "经理";                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。
工程下载:http://download.csdn.net/detail/yysyangyangyangshan/9039017
1 0