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 = [email protected]"\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 = [email protected]"\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

时间: 2024-08-23 02:49:56

NPOI操作Excel 005:写入空Excel(Winform版)的相关文章

NPOI操作Excel 003:写入空Excel

对于NPOI操作Excel前面已经有了简单认识(http://blog.csdn.net/yysyangyangyangshan/article/details/42614209).继续来看如何将内容保存至Excel中.根据前面的经验NPOI操作Excel主要的几个对象分别是:workbook,sheet以及sheet内的row和cell.所以保存至Excel也是对这几个对象进行操作.当然我们平时使用Excel时不光要在单元格中保存内容,还要设置单元格的格式以及字体大小等,也就是格式和样式.这些

NPOI操作Excel 004:写入空Excel(添加保存提示框)

前文说道写入excel的样例,当中保存Excle后须要添加提示框.让用户自己选择保存路径,做改动例如以下. 引用的dll等前面已经说过了, 直接看代码: protected void Btn_WriteExcel(object sender, EventArgs e) { //要保存的内容,此处用代码生成的内容.而在实际中能够是数据库读取的, //亦或是页面输入的内容 DataTable dt = new DataTable(); dt.Columns.Add("序号"); dt.Co

Npoi操作excel

转载地址:http://www.cnblogs.com/knowledgesea/archive/2012/11/16/2772547.html Npoi操作excel Npoi 简介 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.co

NPOI操作EXCEL--设置密码及设置只读

有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完成,如下图:      那么,在NPOI中有没有办法通过编码的方式达到这一效果呢?答案是肯定的. HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); HSSFRow row1 = sheet1.CreateRow(0);HSSFCell cel1 = row1.CreateCell(0);HS

C#开发中使用Npoi操作excel实例代码

C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113 3.Npoi 学习系列教程推荐:http://www.cnblogs.com

通过NPOI操作Excel

最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region excel文件属性 //作者 public string Author { get; set; } //标题 public string Title { get; set; } //主题 public string Subject { get; set; } //标记 public string Keyw

[Solution] NPOI操作Excel

NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. NPOI官方网站:http://npoi.codeplex.com/ 下载:Install-Package NPOI 本节内容,介绍NPOI的类

2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

NPOI教程:http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html 之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的方式完成.这节开始,我们开始学习NPOI的画图功能.先从最简单的开始,画一条直线:对应的代码为: HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");HSSFPatriarch patriarch = sheet1.CreateDra

NPOI操作excel——利用反射机制,NPOI读取excel数据准确映射到数据库字段

> 其实需求很明确,就是一大堆不一样的excel,每张excel对应数据库的一张表,我们需要提供用户上传excel,我们解析数据入库的功能实现. 那么,这就涉及到一个问题:我们可以读出excel的表头,但是怎么知道每个表头具体对应数据库里面的字段呢? 博主经过一段时间的思考与构思,想到一法:现在的情况是我们有excel表A,对应数据库表B,但是A与B具体属性字段的映射关系我们不知.那我们是不是可以有一个A到B的映射文件C呢? 我想,说到这,大家就很明了了... 第一步:为每张excel创建一个与