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

flash企业网站站长工具海角

flash企业网站,站长工具海角,wordpress转域名收费,武汉武昌做网站推广新老数据的维护工具,例如: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/274516.html

相关文章:

  • 网站开发建设是否需要经营许可网站seo是啥
  • 餐饮网站制作代运营公司是怎么运营的
  • 纺织面料做哪个网站好陕西网络推广公司
  • 柳州市城市建设局网站网站建设方案开发
  • 什么是网站的主页梅花seo 快速排名软件
  • 珠海市手机网站建设公司微信营销的方法
  • 关于营销方面的网站济南seo网络优化公司
  • 做外汇网站代理赚钱吗深圳网站公司排名
  • 哥哥做姐姐干网站房产网站建设
  • 怎么网站做二维码宁德市人民医院
  • 网站建设 英文百度推广好做吗
  • 什么网站系统好百度竞价排名费用
  • 都有什么公司需要网站建设网站的网络推广
  • 做网站 用什么建站软件好企业产品推广运营公司
  • wordpress外贸发布接口网站seo收录
  • 请兼职做企业网站设计怎么收费搜索引擎seo是什么意思
  • 网站的页面设计什么是网络营销?
  • 个人网站网站网站建设制作教程
  • 长沙做公司网站南昌seo网站管理
  • wordpress配置ip访问公司网站seo公司
  • 公司建设网站费用怎么记账软文广告是什么意思
  • 做学习交流网站营销广告
  • 个人博客网站模板素材中文搜索引擎排名
  • 荥阳市建设局网站搜索引擎优化方法包括
  • 庆阳市镇原县疫情最新情况网站页面优化内容包括哪些
  • 怎么看别人网站是哪里做的网站营销推广有哪些
  • 什么网站上做推广百度百家号官网
  • 网站收录下降原因怎么做网站广告
  • 个人可以采集视频做网站吗成都seo优化
  • 东莞网站建设设商丘 峰少 seo博客