`
砺雪凝霜
  • 浏览: 157089 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读取Excel表格中数据的方法

阅读更多

1.读取字符串 :

    cell.toString

2.读取Excel表格中的电话号码(数字):

        DecimalFormat df = new DecimalFormat("#");
        String responsiblemenPhone = df.format(c4 .getNumericCellValue());

3.读取date类型
  if (0 == c4.getCellType()) {
       if (HSSFDateUtil.isCellDateFormatted(c4)) {
        Date d = c4.getDateCellValue();
        createTime = new Timestamp(d.getTime());
   } 

常量说明取值
Cell.CELL_TYPE_NUMERIC 数值类型 cell.getNumericCellValue()
或cell.getDateCellValue()
Cell.CELL_TYPE_STRING 字符串类型 cell.getStringCellValue()
或cell.toString()
Cell.CELL_TYPE_BOOLEAN 布尔类型 cell.getBooleanCellValue()
Cell.CELL_TYPE_FORMULA 表达式类型 cell.getCellFormula()
Cell.CELL_TYPE_ERROR 异常类型
不知道何时算异常
cell.getErrorCellValue()
Cell.CELL_TYPE_BLANK 空,不知道何时算空 空就不要取值了吧

下面是一个Excel导入的demo:

public String saveSuccessfulCaseByExcel(SysUser u, File file,
   String fileFileName) {
  String path;
  FileInputStream is = null;
  StringBuffer newFileName = new StringBuffer("");
  int index = StringUtils.lastIndexOf(fileFileName, '.');
  HashSet<OmpServiceSuccessfulCase> set = new HashSet<OmpServiceSuccessfulCase>();
  Boolean flag1 = false;
  Boolean flag2 = false;
  Boolean flag3 = false;
  Boolean flag4 = false;
  String extFileName = StringUtils.substring(fileFileName, index + 1);
  System.out.println(fileFileName);
  // 修改上传的文件名开始
  newFileName = new StringBuffer();
  String time = new SimpleDateFormat("yyyyMMddHHmmssSSS")
    .format(new Date());
  newFileName.append(time);
  for (int i = 0; i < 3; i++) {
   newFileName.append(new Random().nextInt(10));
  }
  // 修改上传的文件名结束
  String separator = java.io.File.separator; // 分隔符
  path = Platform.getInstance().getRealPath() + separator + "file"
    + separator + newFileName.append(u.getOrgId()) + "."
    + extFileName;// 设置保存路径
  File destFile = new File(path);
  try {
   FileUtils.copyFile(file, destFile);
  } catch (IOException e2) {
   // TODO Auto-generated catch block
   e2.printStackTrace();
  }
  File excelFile = new File(path);
  try {
   is = new FileInputStream(excelFile);
  } catch (FileNotFoundException e2) {
   // TODO Auto-generated catch block
   e2.printStackTrace();
  }
  System.out.println(is);
  Workbook workbook = null;
  try {
   workbook = WorkbookFactory.create(is);
  } catch (InvalidFormatException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  Sheet sheet = workbook.getSheetAt(0);// 默认读取的是第一个sheet
  // 检查模板格式是否正确
  Row row1 = sheet.getRow(0);
  int count = row1.getPhysicalNumberOfCells();
  Cell cc1 = row1.getCell(0);
  Cell cc2 = row1.getCell(1);
  Cell cc3 = row1.getCell(2);
  Cell cc4 = row1.getCell(3);
  if (count == 4 && "服务ID(服务ID一定要是该账号发布的服务ID)".equals(cc1.toString())
    && "标题(40个字以内)".equals(cc2.toString())
    && "成功案例详情(2000字以内)".equals(cc3.toString())
    && "创建时间(yyyy/MM/dd)".equals(cc4.toString())) {
   System.out.println(cc4.toString());
   System.out.println("总共:" + sheet.getPhysicalNumberOfRows());
   // 基本校验开始
   if (sheet.getPhysicalNumberOfRows() <= 1) {
    return "导入数据不能为空!";
   } else if (sheet.getPhysicalNumberOfRows() > 1) {
    // 进行迭代
    for (int i = sheet.getFirstRowNum() + 1; i < sheet
      .getPhysicalNumberOfRows(); i++) {
     int k = i + 1;
     Row row = sheet.getRow(i);
     Cell c1 = row.getCell(0);// ompBelowService.serviceId
     Cell c2 = row.getCell(1);// ompBelowService.belowServiceIncome
     Cell c3 = row.getCell(2);
     Cell c4 = row.getCell(3);
     OmpServiceSuccessfulCase ossfc = new OmpServiceSuccessfulCase();
     if (c1 != null && c2 != null && c3 != null && c4 != null) {
      String sid = c1.toString().trim();
      String title = c2.toString().trim();
      String detail = c3.toString().trim();
      Timestamp createTime = null;
      if (sid.length() != 32) {
       flag1 = false;
       return "第" + k + "行服务ID必须为32位";
      } else {
       flag1 = true;
      }
      if (title.length() > 40) {
       flag2 = false;
       return "第" + k + "行成功案例标题必须在40字以内";
      } else {
       flag2 = true;
      }

      if (detail.length() > 2000) {
       flag3 = false;
       return "第" + k + "行成功案例详情必须在2000字以内";
      } else {
       flag3 = true;
      }
      if (0 == c4.getCellType()) {
       if (HSSFDateUtil.isCellDateFormatted(c4)) {
        Date d = c4.getDateCellValue();
        createTime = new Timestamp(d.getTime());
        flag4 = true;
       }
      } else {
       flag4 = false;
       return "第" + k + "行日期格式不对";
      }

      if (flag1 && flag2 && flag3 && flag4) {
       ossfc.setServiceId(sid);
       ossfc.setCaseName(title);
       ossfc.setCaseDetail(detail);
       ossfc.setCreateTime(createTime);
       set.add(ossfc);
      }
     }
    }
    // 基本校验结束,数据库校验开始
    // 校验服务是否存在
    for (OmpServiceSuccessfulCase e : set) {
     String serivceId = e.getServiceId();
     String caseName = e.getCaseName();
     String caseDetail = e.getCaseDetail();
     Timestamp createTime = e.getCreateTime();
     OmpService os = (OmpService) baseTransaction.get(
       OmpService.class, serivceId);
     if (os == null) {
      return "导入的服务ID不存在!";
     } else if (!os.getOrgId().equalsIgnoreCase(u.getOrgId())
       && "1".equals(os.getIfDel())) {
      return "您没有发布服务ID所对应的服务!";
     } else {
      // 校验数据库中是否存在相同的成功案例
      e.setCreateTime(createTime);
      System.out.println(createTime.toString());
      e.setServiceCode(os.getServiceCode());
      e.setServiceId(os.getId());
      e.setServiceName(os.getServiceName());
      e.setCreateuserId(u.getOrgId());
      e.setCreateuserName(u.getUsername());
      e.setOrgId(os.getOrgId());
      e.setOrgName(os.getOrgName());
      e.setOrgType(os.getOrgType());
      e.setCaseName(caseName);
      e.setCaseDetail(caseDetail.replaceAll(
        "(^\\s{1,})|(\\s{1,}$)", ""));
      e.setIfDel("1");
      e.setLastOperatorId(u.getId());
      e
        .setLastOperatAction("saveSuccessfulCaseByExcel.action");
      CommonOrganization co = (CommonOrganization) baseTransaction
        .get(CommonOrganization.class, u.getOrgId());
      CommonWindow cw = (CommonWindow) baseTransaction.get(
        CommonWindow.class, u.getOrgId());
      if (co == null) {
       e.setOwnWin("ompompompompompompompompompomp60");
      } else {
       e.setOwnWin(co.getOwnWin());
      }
      baseTransaction.save(e);
      return null;
     }
    }
   }
  } else {
   return "请按照模板进行数据导入!";
  }
  return null;
 }
}

 

 

 

分享到:
评论

相关推荐

    java 读取excel表格数据 poi

    java读取excel 表格数据。 public static void main(String[] args) { String[][] content=POIExcelUtils.read("E:\\1.xlsx"); for(int i=0;i;i++) { if(content[i]!=null){ for(int j=0;j[i].length;j...

    VB 读取Excel表格数据并在ListView控件中显示

    在VB(Visual Basic)编程中,常常需要处理与Excel...以上就是关于“VB读取Excel表格数据并在ListView控件中显示”的主要知识点。通过掌握这些技能,你可以轻松地在VB程序中实现数据的导入和展示,提高应用的实用性。

    C#中读取Excel表格数据实例

    本文将深入探讨如何在C#中实现无依赖于Microsoft Office的情况下读取Excel表格数据,主要关注以下几个方面:使用开源库、操作Excel文件格式以及优化性能。 首先,C#本身并不内置读取Excel的API,因此我们需要借助第...

    QtExcel.rar_QT操作ex_Qt 表格_qt 数据 excel_qt读取excel表格_qt读取表格

    在开发基于Qt的应用程序时,...总结来说,QtExcel允许开发者在Qt环境中高效地处理Excel数据,无论是读取大量记录还是写入复杂格式的数据。通过理解并运用上述知识点,开发者可以构建强大的数据处理工具,提高工作效率。

    labview读取Excel表格中的数据

    labview读取Excel表格中的数据,速度快,代码实现简单,下载下来直接就可以使用了

    VC读取Excel表格中的数据

    在VC++6.0开发环境中,通过编程读取Excel表格数据是常见的任务,这主要涉及到Microsoft Office自动化接口的使用。本文将深入探讨如何利用Visual C++ 6.0与Excel进行交互,实现从Excel文件中读取数据的功能。 首先,...

    .Net、C#读取excel表格数据存数据库

    .Net C# 读取Excel表格数据,根据表格数据结构在数据库新建一张对应的数据表既可以上传导入SQlServer数据库,代码有上传文件功能和解析表格数据功能,这里是建数据转成DataTable保存,导入速度对循环导入效率高很多...

    Android开发之读取Excel表格数据

    本篇文章将详细讲解如何在Android环境中直接读取资源文件夹下的Excel表格数据,为你的应用提供便捷的数据处理能力。 首先,理解Android的资源文件夹结构是至关重要的。在Android Studio项目中,我们通常把静态的非...

    C#把excel表格中的数据读入到数组

    2. **安全性考虑**:直接读取Excel文件可能存在安全风险,建议在生产环境中进行适当的验证和错误处理。 3. **性能优化**:对于非常大的Excel文件,直接加载所有数据可能会导致内存占用过高。可以考虑分批次读取数据...

    C# winform 读取Excel表格

    在C# WinForm应用中,读取Excel表格是常见的任务,尤其在数据处理和报表生成时。本项目可能是一个简单的示例,展示了如何利用C#的库来读取Excel文件中的数据。以下将详细讲解这一过程,以及涉及的关键知识点。 首先...

    如何用VC读取Excel表格中的数据详细

    ### 如何用VC读取Excel表格中的数据详细 在探讨如何使用VC(Visual C++)读取Excel表格中的数据之前,我们首先需要了解几个关键概念和技术背景。 #### 1. 使用VC通过ODBC访问Excel VC可以利用ODBC(Open Database...

    用Java程序读取Excel表格内容并显示在Swing中

    在Java编程环境中,读取Excel表格内容并将其展示在Swing界面是一项常见的任务,尤其在数据处理和报表展示方面。本篇文章将详细讲解如何实现这一功能。 首先,我们需要引入两个关键库:Apache POI用于读取Excel文件...

    易语言高级表格读取excel和MDB数据

    高级表格组件是易语言中用于展示和操作表格数据的控件,它支持多行多列显示,可以方便地进行数据的添加、修改和删除。在实际应用中,我们通常会结合使用上述方法,将Excel和Access的数据加载到高级表格中,以供用户...

    C # 读取Excel 中的数据然后在DataGridView中显示

    文章中详细介绍了读取 Excel 表格数据的步骤,并提供了相应的 C# 代码。 知识点一:读取 Excel 表格中的数据 读取 Excel 表格中的数据可以使用 OleDbConnection 和 OleDbDataAdapter 两个类。OleDbConnection 类...

    读取Excel表格的插件库

    "读取Excel表格的插件库"正是这样一个工具,它是一个dll动态链接库,能够帮助开发者高效地读取Excel文件,并将数据转换为其他格式,例如Xml,以便更好地集成到项目中。 Unity是一个非常流行的开源游戏引擎,广泛...

    Labview读取Excel表格到数组中,并获取行列信息

    本篇将深入探讨如何使用LabVIEW来读取Excel表格数据并将其转换为数组,同时获取行数和列数的信息。LabVIEW作为一个图形化编程语言,提供了丰富的工具和库,使得与Excel交互变得简单。 首先,我们要知道在LabVIEW中...

    jquery读取excel组件

    jquery读取excel组件,可读取excel表格中的内容

    JS方法读取excel表格并显示在页面上

    JS方法读取excel表格并显示在页面上,单HTML网页代码事例

    用ASP.NET读取读取EXCEL中的数据到WEB页面

    在ASP.NET中,读取Excel数据并将其展示在Web页面上是常见的需求,尤其是在数据分析、报表展示或数据导入等场景中。本项目提供了一种实现方法,包括完整的项目代码和说明,帮助开发者快速理解并应用到自己的项目中。 ...

Global site tag (gtag.js) - Google Analytics