NPOI进行Excel文件的导出

NPOI无需Office COM组件且不依赖Office,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。

 

被人称为操作EXCEL的终极方案,例子如下:

 

 

 

            ITable pXbTable = XYGlobalVariable.ZDBAdoWorkspace.OpenTable(XYTableDeclare.c_ZCPG_XB_PY_AFTERINVESTIGATE);
            DataTable pXBTable = pXbTable.GetDataTable(new QueryFilter() { WhereString = "XMBH='" + cmbXMBH.SelectedValue.ToString() + "'", AddCaptionField = true });
            RowBase pRowXM = XYGlobalVariable.ZDBAdoWorkspace.OpenTable(XYTableDeclare.c_XMJBXX_TableName).GetEntity<RowBase>(new QueryFilter() { WhereString = string.Format("XMBH ='{0}'", cmbXMBH.SelectedValue.ToString()) });
          
            try
            { 
                //将WorkBook指到我们原本设计好的“林木资产评估结果明细表.xls”
                string xlsPath_LM = System.Windows.Forms.Application.StartupPath + "\\Temp\\林木资产评估结果明细表.xls";
                IWorkbook wb_LM = new HSSFWorkbook(new FileStream(xlsPath_LM, FileMode.Open));
                //设定要使用的Sheet为第0个Sheet
                ISheet TempSheet_LM = wb_LM.GetSheetAt(0);
                int StartRow = 4;
                //pXBTable为Query回来的资料
                for (int i = 0; i < pXBTable.Rows.Count; i++)
                {
                    //获取"林木"单元格并赋值
                    TempSheet_LM.GetRow(StartRow + i).Cells[0].SetCellValue(Convert.ToString(pRowXM["ZL"]));
                    TempSheet_LM.GetRow(StartRow + i).Cells[1].SetCellValue(Convert.ToString(pXBTable.Rows[i]["XBH"]));
                    if (!string.IsNullOrEmpty(pXBTable.Rows[i]["XBMJ"].ToString()))
                    { TempSheet_LM.GetRow(StartRow + i).Cells[2].SetCellValue(Convert.ToDouble(pXBTable.Rows[i]["XBMJ"])); }

                    TempSheet_LM.GetRow(StartRow + i).Cells[3].SetCellValue(Convert.ToString(pXBTable.Rows[i]["YSSZ_DESC"]));
                    TempSheet_LM.GetRow(StartRow + i).Cells[5].SetCellValue(Convert.ToString(pXBTable.Rows[i]["LZU_DESC"]));
                    if (!string.IsNullOrEmpty(pXBTable.Rows[i]["GQXJ"].ToString()))
                    { TempSheet_LM.GetRow(StartRow + i).Cells[6].SetCellValue(Convert.ToDouble(pXBTable.Rows[i]["GQXJ"])); }
                    if (!string.IsNullOrEmpty(pXBTable.Rows[i]["XBXJ"].ToString()))
                    { TempSheet_LM.GetRow(StartRow + i).Cells[7].SetCellValue(Convert.ToDouble(pXBTable.Rows[i]["XBXJ"])); }
                    if (!string.IsNullOrEmpty(pXBTable.Rows[i]["LMGQPGZ"].ToString()))
                    { TempSheet_LM.GetRow(StartRow + i).Cells[8].SetCellValue(Convert.ToDouble(pXBTable.Rows[i]["LMGQPGZ"])); }
                    if (!string.IsNullOrEmpty(pXBTable.Rows[i]["XBLMPGZ"].ToString()))
                    { TempSheet_LM.GetRow(StartRow + i).Cells[9].SetCellValue(Convert.ToDouble(pXBTable.Rows[i]["XBLMPGZ"])); }

                    第一个Row要用Create的
                    //TempSheet.CreateRow(StartRow + i).CreateCell(0).SetCellValue(Convert.ToString(pXBTable.Rows[i][0]));
                    第二个Row之后直接用Get的
                    //TempSheet.GetRow(StartRow + i).CreateCell(1).SetCellValue(Convert.ToString(pXBTable.Rows[i][1]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(2).SetCellValue(Convert.ToString(pXBTable.Rows[i][2]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(3).SetCellValue(Convert.ToString(pXBTable.Rows[i][3]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(4).SetCellValue(Convert.ToString(pXBTable.Rows[i][4]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(5).SetCellValue(Convert.ToString(pXBTable.Rows[i][5]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(6).SetCellValue(Convert.ToString(pXBTable.Rows[i][6]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(7).SetCellValue(Convert.ToString(pXBTable.Rows[i][7]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(8).SetCellValue(Convert.ToString(pXBTable.Rows[i][8]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(9).SetCellValue(Convert.ToString(pXBTable.Rows[i][9]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(10).SetCellValue(Convert.ToString(pXBTable.Rows[i][10]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(11).SetCellValue(Convert.ToString(pXBTable.Rows[i][11]));
                    //TempSheet.GetRow(StartRow + i).CreateCell(12).SetCellValue(Convert.ToString(pXBTable.Rows[i][12]));
                }
                //将文档写到指定位置
                using (FileStream file_LM = new FileStream(strExcelFileName + "\\林木资产评估结果明细表.xls", FileMode.Create))
                {
                    wb_LM.Write(file_LM);
                    file_LM.Close();
                    file_LM.Dispose();
                }
            }
            catch (Exception ex)
            {
                string a = ex.ToString();
            } 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值