PageOffice 开发者中心 PageOffice 开发者中心
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
  • 开始

  • 通用控制

  • Word

  • Excel

    • 常用控制

    • 动态填充

    • 用户输入提交

      • 提取单元格数据
      • 提取表格区域数据
    • PDF

    • FileMaker

    • PPT

    • 更多

    目录

    提取表格区域数据

    # 提取表格区域数据

    • 查看本示例演示效果
    • 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码

    注意

    本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

    在实际的开发过程中,经常会遇到提取Excel文档中数据保存到数据库中的需求,PageOffice客户端控件支持在线保存Excel文件时,打包Excel文档中的指定单元格的数据或所有的数据提交到服务器端,在服务器端创建PageOffice的WorkbookReader对象,就可以获取到Excel单元格中的数据。

    # 后端代码

    在后端编写代码调用webOpen方法以表单提交模式xlsSubmitForm打开文件,创建Sheet对象并操作一块区域(Table),并命名,比如:Info。

    设置接收处理PageOffice客户端控件提交数据的服务器端后台方法为:saveData

      PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
      
      WorkbookWriter workBook = new WorkbookWriter();
      SheetWriter sheet = workBook.openSheet("Sheet1");
      ExcelTableWriter table = sheet.openTable("B4:F13");//设置Table对象的操作区域
      table.setSubmitName("Info");//设置table对象的提交名称,以便保存页面获取提交的数据
      
      poCtrl.setWriter(workBook);//此行必须
      poCtrl.setSaveDataPage("saveData");//设置保存数据接口地址
      //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
      poCtrl.webOpen("D:\\documents\\test.xlsx", OpenModeType.xlsSubmitForm, "张三");
      
      PageOfficeNetCore.PageOfficeCtrl poCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
      
      PageOfficeNetCore.Excel.WorkbookWriter workBook = new PageOfficeNetCore.Excel.WorkbookWriter();
      PageOfficeNetCore.Excel.SheetWriter sheet = workBook.OpenSheet("Sheet1");
      PageOfficeNetCore.Excel.ExcelTableWriter table = sheet.OpenTable("B4:F13");
      table.SubmitName = "Info";//设置table对象的提交名称,以便保存页面获取提交的数据
      
      poCtrl.SetWriter(workBook);//此行必须
      poCtrl.SaveDataPage = "SaveData";//设置保存数据接口地址
      //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
      poCtrl.WebOpen("doc/test.xls", PageOfficeNetCore.OpenModeType.xlsSubmitForm, "tom");
      
      // Make sure to add code blocks to your code group

      在服务器端后台方法saveData中,创建com.zhuozhengsoft.pageoffice.excel命名空间中的WorkbookReader对象,提取各单元格数据。您可以在此方法中编写代码,把获取到的数据保存到对应的数据库表中。

        WorkbookReader workBook = new WorkbookReader(request, response);
        SheetReader sheet = workBook.openSheet("Sheet1");
        ExcelTableReader table = sheet.openTable("Info");//Info为打开文件时设置的SubmitName
        String content = "";
        int result = 0;
        while (!table.getEOF()) {
            //获取提交的数值
            if (!table.getDataFields().getIsEmpty()) {
                content += "<br/>Product: "
                        + table.getDataFields().get(0).getText();
                content += "<br/>Plan: "
                        + table.getDataFields().get(1).getText();
                content += "<br/>Real: "
                        + table.getDataFields().get(2).getText();
                content += "<br/>Total: "
                        + table.getDataFields().get(3).getText();
        
                if (table.getDataFields().get(2).getText().equals(null)
                        || table.getDataFields().get(2).getText().trim().length() == 0
                ) {
                    content += "<br/>Rate: 0%";
                } else {
                    float f = Float.parseFloat(table.getDataFields().get(2)
                            .getText());
                    f = f / Float.parseFloat(table.getDataFields().get(1).getText());
                    DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
                    content += "<br/>Rate: " + df.format(f * 100) + "%";
                }
                content += "<br/>*********************************************";
            }
            //循环进入下一行
            table.nextRow();
        }
        table.close();
        
        //可以在此处编写代码把content输出到控制台,查看提交数据
        
        workBook.close();
        
        PageOfficeNetCore.Excel.WorkbookReader workBook = new PageOfficeNetCore.Excel.WorkbookReader(Request, Response);
        await workBook.LoadAsync();
        PageOfficeNetCore.Excel.SheetReader sheet = workBook.OpenSheet("Sheet1");
        PageOfficeNetCore.Excel.ExcelTableReader table = sheet.OpenTable("Info");
        string content = "";
        int result = 0;
        while (!table.EOF)
        {
            //获取提交的数值
            //DataFields.Count标识的是提交过来的table的列数
            if (!table.DataFields.IsEmpty)
            {
                content += "<br/>月份名称:" + table.DataFields[0].Text;
                content += "<br/>计划完成量:" + table.DataFields[1].Text;
                content += "<br/>实际完成量:" + table.DataFields[2].Text;
                content += "<br/>累计完成量:" + table.DataFields[3].Text;
                if (string.IsNullOrEmpty(table.DataFields[2].Text) || !int.TryParse(table.DataFields[2].Text, out result) ||
                    !int.TryParse(table.DataFields[1].Text, out result))
                {
                    content += "<br/>完成率:0";
                }
                else
                {
                    float f = int.Parse(table.DataFields[2].Text);
                    f = f / int.Parse(table.DataFields[1].Text);
                    content += "<br/>完成率:" + string.Format("{0:P}", f);
                }
                content += "<br/>*********************************************";
            }
            //循环进入下一行
            table.NextRow();
        }
        table.Close();
        
        //可以在此处编写代码把content输出到控制台,查看提交数据
        
        workBook.Close();
        ViewBag.content = content;
        
        // Make sure to add code blocks to your code group

        # 前端代码

        本示例无前端关键代码。

        上次更新: 2025/07/21, 15:21:36
        PageOffice | Copyright © 2013-2026 卓正软件 京ICP备12010902号-2 京公网安备 11010502019270号
        • 跟随系统
        • 浅色模式
        • 深色模式
        • 阅读模式