当前位置: 首页 > wzjs >正文

商城网站实例企业信用公示信息网官网网址

商城网站实例,企业信用公示信息网官网网址,电子政务网站代码,朝阳区建设工作办公室网站新老数据的维护工具,例如:A文件有a、b、c列共十条数据,B文件有a、b、c、d列数据共15条数据(其中有包含A的一些数据)如何快速的将A里有的数据放入到B中(长点心吧!可别一条条比对着录入数据&#…

        新老数据的维护工具,例如:A文件有a、b、c列共十条数据,B文件有a、b、c、d列数据共15条数据(其中有包含A的一些数据)如何快速的将A里有的数据放入到B中(长点心吧!可别一条条比对着录入数据)

下面是一个完整的 Java 实现,

        使用 Apache POI 库处理 Excel 文件,对比 A、B 文件中的"测点标识"列(定位到相同的数据行),并将 A 文件中的"标签值"列填充到 B 文件对应的位置。

1. 添加 Maven 依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency>
2. 完整代码实现
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;public class ExcelDataComparator {public static void main(String[] args) {String fileAPath = "path/to/FileA.xlsx";String fileBPath = "path/to/FileB.xlsx";String outputPath = "path/to/OutputFile.xlsx";try {// 1. 读取文件A的数据(测点标识 -> 标签值)Map<String, String> pointToTagMap = readFileA(fileAPath);// 2. 处理文件B并填充数据processFileB(fileBPath, outputPath, pointToTagMap);System.out.println("数据处理完成!输出文件: " + outputPath);} catch (Exception e) {e.printStackTrace();}}/*** 读取文件A,构建测点标识到标签值的映射*/private static Map<String, String> readFileA(String filePath) throws Exception {Map<String, String> map = new HashMap<>();FileInputStream fis = new FileInputStream(filePath);Workbook workbook = new XSSFWorkbook(fis);Sheet sheet = workbook.getSheetAt(0); // 假设使用第一个工作表// 获取表头行确定列索引Row headerRow = sheet.getRow(0);int pointIdIndex = -1;int tagValueIndex = -1;for (Cell cell : headerRow) {String headerName = cell.getStringCellValue().trim();if ("测点标识".equals(headerName)) {pointIdIndex = cell.getColumnIndex();} else if ("标签值".equals(headerName)) {tagValueIndex = cell.getColumnIndex();}}if (pointIdIndex == -1 || tagValueIndex == -1) {throw new RuntimeException("文件A中缺少必要的表头列");}// 遍历数据行for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);if (row == null) continue;String pointId = getCellStringValue(row.getCell(pointIdIndex));String tagValue = getCellStringValue(row.getCell(tagValueIndex));if (pointId != null && !pointId.isEmpty()) {map.put(pointId, tagValue);}}workbook.close();fis.close();return map;}/*** 处理文件B并填充数据*/private static void processFileB(String inputPath, String outputPath, Map<String, String> pointToTagMap) throws Exception {FileInputStream fis = new FileInputStream(inputPath);Workbook workbook = new XSSFWorkbook(fis);Sheet sheet = workbook.getSheetAt(0);// 获取表头行确定列索引Row headerRow = sheet.getRow(0);int pointIdIndex = -1;int tagValueIndex = -1;for (Cell cell : headerRow) {String headerName = cell.getStringCellValue().trim();if ("测点标识".equals(headerName)) {pointIdIndex = cell.getColumnIndex();} else if ("标签值".equals(headerName)) {tagValueIndex = cell.getColumnIndex();}}if (pointIdIndex == -1) {throw new RuntimeException("文件B中缺少'测点标识'列");}// 如果文件B没有"标签值"列,可以创建(这里假设已有该列)if (tagValueIndex == -1) {tagValueIndex = headerRow.getLastCellNum();Cell newHeaderCell = headerRow.createCell(tagValueIndex);newHeaderCell.setCellValue("标签值");}// 遍历数据行并填充for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);if (row == null) continue;String pointId = getCellStringValue(row.getCell(pointIdIndex));if (pointId == null || pointId.isEmpty()) continue;// 从文件A的映射中获取对应的标签值String tagValue = pointToTagMap.get(pointId);if (tagValue != null) {Cell targetCell = row.getCell(tagValueIndex, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);targetCell.setCellValue(tagValue);}}// 保存修改后的文件FileOutputStream fos = new FileOutputStream(outputPath);workbook.write(fos);workbook.close();fos.close();}/*** 安全获取单元格字符串值*/private static String getCellStringValue(Cell cell) {if (cell == null) return "";switch (cell.getCellType()) {case STRING:return cell.getStringCellValue().trim();case NUMERIC:return String.valueOf((int) cell.getNumericCellValue());case BOOLEAN:return String.valueOf(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();default:return "";}}
}

关键点说明

  1. 数据结构

    • 使用 Map<String, String> 存储文件A中的"测点标识"->"标签值"映射关系

  2. 列索引定位

    • 动态查找"测点标识"和"标签值"所在的列索引

  3. 单元格处理

    • getCellStringValue() 方法处理各种类型的单元格数据

    • 使用 Row.MissingCellPolicy.CREATE_NULL_AS_BLANK 处理可能为空的单元格

  4. 文件处理

    • 读取文件A构建映射关系

    • 读取文件B并修改数据

    • 输出到新文件(避免修改原始文件)

使用示例

假设:

  • 文件A.xlsx:

    测点标识标签值
    P001温度
    P002压力
  • 文件B.xlsx:

    测点标识其他数据标签值
    P001xxx
    P003yyy

运行程序后,输出文件将变为:

测点标识其他数据标签值
P001xxx温度
P003yyy

注意事项

  1. 文件格式支持:代码使用 .xlsx 格式(POI的XSSF)

  2. 性能优化:对于大文件,可以考虑使用 SXSSFWorkbook

  3. 错误处理:实际应用中应添加更完善的异常处理

  4. 表头检查:确保两个文件都有"测点标识"列

如果需要处理更复杂的情况(如多sheet、不同表头等),可以进一步扩展此代码。

http://www.dtcms.com/wzjs/571265.html

相关文章:

  • 电力建设规范下载网站企业型商务网站制作做法
  • 网站开发培训北京seo搜外
  • 中国建设工程造价网站免费建立自己微网站
  • 网站网页区别是什么wordpress怎么static
  • 邢台市做网站wordpress mo
  • 吉林哪里做网站2017网络公司排名
  • 怎么用vs2010做网站漂亮的html页面源码
  • 网站的建设主题网页制作软件2023
  • 丹东公司做网站公司简介模板英语
  • 网站如何做301毕业设计网站选题
  • 网站服务包括什么做网站需要空间
  • 网站建设管理流程大气宽屏网站模板
  • 有了域名怎样做网站刷排名seo软件
  • 北京有哪些网站建设公司好即墨网站建设即墨
  • 个人网站设计策划书高唐网站
  • 公司公司网站建设公司有没有在网上做ps赚钱的网站
  • 网站的要素是什么意思茂名专业网站建设公司
  • 商务网站要怎么设计服装设计网站排行榜前十名
  • 工程建设采购有哪些网站网络程序员
  • 海兴网站建设公司深圳网域公司
  • 绍兴市科信建设工程检测中心网站做网站的前途
  • 中国建设网站邓亚萍近况 做网站败光20亿
  • nginx 网站建设app软件一键生成工具
  • 24小时学会网站建设 pdf广州市服务好的网站制作排名
  • 南通市建设监理协会网站百度用户服务中心官网电话
  • 苏州h5网站上海华东民航机场建设公司网站
  • 网站建设微信商城运营Wordpress主题更改导航栏颜色
  • 网站开发需求分析用的图做我韩国连续剧网站
  • 免费推广自己的网站建筑网上接活平台
  • 企业网站都是静态的吗淘宝客怎样建设网站