使用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色

news2024/11/24 12:32:16

 -- 日、时、分、秒,这是计时的单位,惜时就应该惜日、惜时、惜分、惜秒。

用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色。以下是一个简单的示例,使用 Apache POI 进行 Excel 操作:

首先,你需要添加 Apache POI 的依赖。如果是 Maven 项目,可以在 pom.xml 文件中添加:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version> <!-- 使用适当的版本 -->
</dependency>
 

json 格式

{
    "yourArrayKey":[
    {
        
        "url":"http://epaper.jwb.com.cn/jwb"
        
    },
    {
        "url":"http://epaper.jwb.com.cn/jwb"
    }
]
}

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class ExcelValidator {

    public static void main(String[] args) {
        String excelFilePath = "path/to/your/excel/file.xlsx";

        try {
            markInvalidRows(excelFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void markInvalidRows(String excelFilePath) throws IOException {
        FileInputStream excelFile = new FileInputStream(new File(excelFilePath));
        Workbook workbook = new XSSFWorkbook(excelFile);

        Sheet sheet = workbook.getSheetAt(0);

        for (Row row : sheet) {
            Cell urlCell = row.getCell(0); // Assuming URL is in the first column (index 0)

            if (urlCell != null && urlCell.getCellType() == CellType.STRING) {
                String url = urlCell.getStringCellValue();
                boolean isValid = isValidUrl(url);

                if (!isValid) {
                    markRowAsInvalid(row);
                }
            }
        }

        excelFile.close();

        // Save the changes back to the Excel file
        FileOutputStream outputStream = new FileOutputStream(excelFilePath);
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }

    private static boolean isValidUrl(String urlString) {
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("HEAD");
            connection.connect();

            int responseCode = connection.getResponseCode();
            long responseTime = connection.getHeaderFieldDate("Date", 0) - connection.getHeaderFieldDate("Date", 0);

            return responseCode == HttpURLConnection.HTTP_OK && responseTime <= 20;
        } catch (Exception e) {
            return false;
        }
    }

    private static void markRowAsInvalid(Row row) {
        CellStyle style = row.getSheet().getWorkbook().createCellStyle();
        style.setFillForegroundColor(IndexedColors.RED.getIndex());
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        for (Cell cell : row) {
            cell.setCellStyle(style);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1260522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

饺子馆外卖点餐系统小程序效果如何

餐饮行业所涵盖的细分类目非常广&#xff0c;同时又是经济发展的重要支撑&#xff0c;市场规模非常高。饺子是很多人非常喜欢吃的食物&#xff0c;尤其过年的时候&#xff0c;必是少不了几碗饺子&#xff0c;平时也有大量人前往饺子馆。 但相对比火锅、炒菜馆则少些竞争力&…

《山水间的家》第二季收官,国台酒业解锁中国式浪漫

执笔 | 洪大大 编辑 | 萧 萧 近日&#xff0c;由国台酒特别支持的大型文旅探访节目《山水间的家》第二季在总台央视综合频道&#xff08;CCTV-1&#xff09;正式收官。 第二季节目以家庭为视角切入&#xff0c;先后走进江苏、四川、重庆、江西、湖北、贵州、浙江等地24个特色…

【Java】实现一个自己的线程池

上文中我们讲了线程池的简单使用&#xff0c;这里我们来讲一下如何简单实现一个自己的线程池 本文实现这个线程池所达到的效果是&#xff1a;用户给出线程数目&#xff0c;程序根据用户给出的数创建固定数目的线程 1、框架 首先写定义一个线程池类 class MyThreadPool{}pub…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式

更新时间&#xff1a;2023年10月31日 11:37:53 作者&#xff1a;产品人小柒 dbeaver数据库连接工具,可以支持几乎所有的主流数据库.mysql,oracle.sqlserver,db2 等等,这篇文章主要给大家介绍了关于DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问…

JVM——垃圾回收器(G1,JDK9默认为G1垃圾回收器)

1.G1垃圾回收器 JDK9之后默认的垃圾回收器是G1&#xff08;Garbage First&#xff09;垃圾回收器。 Parallel Scavenge关注吞吐量&#xff0c;允许用户设置最大暂停时间 &#xff0c;但是会减少年轻代可用空间的大小。 CMS关注暂停时间&#xff0c;但是吞吐量方面会下降。 而G1…

百度网盘PC端程序二维码刷新不出来

问题 百度网盘PC端程序二维码刷新不出来。 原因 下载的百度网盘PC端程序版本有问题。 解决办法 删除百度网盘PC端程序&#xff0c;从官网下载&#xff0c;选择“从microsoft获取”&#xff0c;安装后解决。

vue3通过provide和inject实现多层级组件通信

父组件 <template><div><h1>我是父组件 {{num}}</h1><hr><child></child></div> </template><script setup> import child from ./child.vue; import { ref,provide } from vue; let num ref(520) provide(pare…

论文阅读:“Model-based teeth reconstruction”

文章目录 AbstractIntroductionTeeth Prior ModelData PreparationParametric Teeth Model Teeth FittingTeeth Boundary Extraction Reference Abstract 近年来&#xff0c;基于图像的人脸重建方法日趋成熟。这些方法可以捕捉整个面部或面部特定区域&#xff08;如头发、眼睛…

业务逻辑漏洞原理及复现

业务逻辑漏洞复现 文章目录 业务逻辑漏洞复现什么是业务逻辑漏洞验证码绕过漏洞复现抓包1分钱购买商品dami_5.4逻辑漏洞复现皮卡丘验证码绕过 什么是业务逻辑漏洞 由于开发者的逻辑不严谨&#xff0c;造成的程序异常 由于开发者的逻辑不严谨造成的程序功能异常比如某一个购物…

许战海战略文库|主品牌升级为产业技术品牌,引领企业全球化发展

在当今高速发展的全球经济中&#xff0c;企业品牌已经成为其核心资产之一。这不仅仅是因为品牌可以为消费者带来识别度&#xff0c;更重要的是&#xff0c;它们可以为企业带来深厚的竞争壁垒。但对于许多企业来说&#xff0c;特别是技术密集型企业&#xff0c;仅仅依靠主品牌的…

【自然语言处理】利用sklearn库函数绘制三维瑞士卷

一&#xff0c;原理介绍 sklearn.datasets.make_swiss_roll&#xff08;&#xff09;函数提供了三维瑞士卷的数据集&#xff0c;我们可以利用他来生成瑞士卷&#xff0c;该函数的用法见sklearn官方文档&#xff1a;官网文档&#xff1a;sklearn.datasets.make_swiss_roll&…

【C++】bazel构建工具配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍bazel构建工具配置与使用。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷…

系列二十、Spring循环依赖问题

一、概述 循环依赖是指多个bean之间相互依赖&#xff0c;形成了一个闭环。比如A依赖于B、B依赖于C、C依赖于A&#xff0c;形成了一个圈&#xff0c;如&#xff1a; 二、循环依赖案例 2.1、构造方法注入产生循环依赖案例 2.1.1、ServiceA /*** Author : 一叶浮萍归大海* Date…

力扣:183. 从不订购的客户(Python3)

题目&#xff1a; Customers 表&#xff1a; ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ---------------------- 在 SQL 中&#xff0c;id 是该表的主键。 该表的每一行都表示客户的 ID …

QMap key()和value(const Key key, const T defaultValue = T()) const第二个参数作用

value()函数介绍 返回与键key关联的值。 如果map不包含键为key的项&#xff0c;则该函数返回defaultValue。 如果没有指定defaultValue&#xff0c;该函数返回一个默认构造的值。 如果映射中有多个key项&#xff0c;则返回最近插入的项的值。 示例 定义自定义类型&#xff…

MATLAB中fft与fftshift的区别

两者的区别在于&#xff1a; fft函数将时域信号转换为频域信号&#xff0c;即将信号从时间域转换为频率域。fftshift函数用于对fft计算结果进行移位操作&#xff0c;将频域信号的零频率分量移到频谱的中心&#xff0c;方便观察和处理。fftshift函数将fft计 算结果沿着中心点进…

2023年最后一次PMP项目管理认证考试成功举行!

2023年11月25日&#xff0c;PMI项目管理资格认证考试顺利举行&#xff01; 才聚集团作为目前国内规模最大的项目管理专业考试服务机构&#xff0c;此次考试负责深圳、广州、东莞、珠海、南宁、保定6个城市的现场考务工作&#xff0c;各考点的布置&#xff0c;入场&#xff0c;…

门店预约系统会员小程序作用如何

除了线上卖货外&#xff0c;很多行业或商家的产品/服务需要进店&#xff0c;因此一款完善的门店预约系统是众商家需要的。 通过【雨科】平台搭建门店预约小程序&#xff0c;通过预约功能&#xff0c;客户可以查看服务并选择规格、时间等填写信息预约&#xff0c;客户与商家同时…

CMake语法解读 | Qt6需要用到

CMake 入门CMakeLists.txtmain.cpp编译示例cmake常用参数入门 Hello CMake CMake 是一个用于配置跨平台源代码项目应该如何配置的工具建立在给定的平台上。 ├── CMakeLists.txt # 希望运行的 CMake命令 ├── main.cpp # 带有main 的源文件 ├── include # 头文件目录 …

【C++】多态(上) 多态 | 虚函数 | 重写 | final、override | 接口继承与实现继承 | 抽象类

一、多态 概念 多态&#xff0c;就是多种状态&#xff0c;即不同的对象去完成同一个行为时会产生出不同的状态。比如&#xff1a;买票时&#xff0c;成人要原价买&#xff0c;学生和老人就可以享受优惠价便宜一点儿。同样是买票这个行为&#xff0c;不同的对象来做就有不同的…