Java操作excel之poi

1. 创建Excel

1.1 创建新Excel工作簿

引入poi依赖

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->          
<dependency>                  <groupId>org.apache.poi</groupId>                  <artifactId>poi</artifactId>                  <version>5.2.3</version>          
</dependency>

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Workbook; 
import java.io.FileOutputStream;  
public class Demo01 {     public static void main(String[] args) throws Exception {         // 创建一个工作簿         Workbook wb = new HSSFWorkbook();         // 创建输出流         FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\创建一个Excel工作簿.xls");         wb.write(fileOutputStream);         // 工作簿写出流         wb.close();     } 
}

运行代码

 1.2 创建新sheet页

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Workbook;   
import java.io.FileOutputStream;   
public class Demo02 {          public static void main(String[] args) throws Exception {                  // 创建一个工作簿                  Workbook wb = new HSSFWorkbook();                  // 创建一个sheet页                  wb.createSheet("这是第一个sheet的名字");                  wb.createSheet("这是第二个sheet的名字");                  // 创建输出流                  FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\创建sheet.xls");                  // 工作簿写出流                  wb.write(fileOutputStream);                  wb.close();          }  
}

运行代码

1.3 创建单元格

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Row;  
import org.apache.poi.ss.usermodel.Sheet;  
import org.apache.poi.ss.usermodel.Workbook;   
import java.io.FileOutputStream;   
public class Demo03 {          public static void main(String[] args) throws Exception {                  // 创建一个工作簿                  Workbook wb = new HSSFWorkbook();                  // 创建一个sheet页                  Sheet sheet = wb.createSheet("这是第一个sheet的名字");                  // 创建单元格并设置内容                  // 创建第一行                  Row row = sheet.createRow(0);                  row.createCell(0).setCellValue(1); // 第一列          row.createCell(1).setCellValue(1.2); // 第二列            row.createCell(2).setCellValue("字符串"); // 第三列                // 创建输出流                  FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\创建sheet.xls");                // 工作簿写出流                  wb.write(fileOutputStream);               wb.close();        }  
}

运行代码

2. 创建时间格式单元格

2.1 创建一个时间格式的单元格

Java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.util.Date;/*** @Description: 创建时间格式单元格* @author: lh*/
public class Demo04 {public static void main(String[] args) throws Exception {Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(0);row.createCell(0).setCellValue(new Date());// 设置单元格日期格式CreationHelper creationHelper = workbook.getCreationHelper();CellStyle cellStyle = workbook.createCellStyle();// 单元格样式cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss"));Cell cell = row.createCell(1);cell.setCellValue(new Date());cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

2.2 遍历工作簿的行和列并获取单元格内容

java代码

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;/*** @Description: 遍历单元格* @author: lh*/
public class Demo05 {public static void main(String[] args) throws Exception {FileInputStream fileInputStream = new FileInputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");POIFSFileSystem fs = new POIFSFileSystem(fileInputStream);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fs);HSSFSheet sheet = hssfWorkbook.getSheetAt(0);if (sheet == null) {return;}// 遍历rowfor (int i = 0; i <= sheet.getLastRowNum(); i++) {HSSFRow row = sheet.getRow(i);if (row == null) {continue;}// 遍历cellfor (int j = 0; j <= row.getLastCellNum(); j++) {if (row.getCell(j) == null) {continue;}System.out.print(" " + getValue(row.getCell(j)));}System.out.println();}}/*** 获取不同类型单元格类型的值 * @param cell 单元格* @return 单元格内容*/private static String getValue(HSSFCell cell) {switch (cell.getCellType()) {case NUMERIC:return Double.toString(cell.getNumericCellValue());case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();case STRING:return cell.getStringCellValue();// Add cases for other cell types as needed...default:System.out.println("Unsupported cell type");return "";}}
}

运行结果

2.4 文本提取

Java代码

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;/*** @Description: 文本提取* @author: lh*/
public class Demo06 {public static void main(String[] args) throws Exception {FileInputStream fileInputStream = new FileInputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");POIFSFileSystem fs = new POIFSFileSystem(fileInputStream);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fs);ExcelExtractor excelExtractor = new ExcelExtractor(hssfWorkbook);excelExtractor.setIncludeSheetNames(false); //不需要sheet页System.out.println(excelExtractor.getText());fileInputStream.close();fs.close();}
}

运行结果 

3. 单元格处理

3.1 单元格对齐方式

Java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.FileOutputStream;import org.apache.poi.ss.usermodel.*;/*** @Description: 单元格对齐方式* @author: lh*/
public class Demo07 {public static void main(String[] args) throws Exception {Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(0);row.setHeightInPoints(30);// 创建单元格对齐方式createCell(workbook, row, (short) 0, HorizontalAlignment.CENTER,  VerticalAlignment.CENTER, "单元格对齐方式1");createCell(workbook, row, (short) 1, HorizontalAlignment.LEFT, VerticalAlignment.BOTTOM,  "单元格对齐方式2");createCell(workbook, row, (short) 2, HorizontalAlignment.RIGHT, VerticalAlignment.TOP,  "单元格对齐方式3");FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}private static void createCell(Workbook workbook, Row row, short column, HorizontalAlignment align, VerticalAlignment valign, String value) {Cell cell = row.createCell(column);CellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(align);cellStyle.setVerticalAlignment(valign);cell.setCellValue(value);cell.setCellStyle(cellStyle);}
}

运行结果

3.2 单元格边框处理

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 单元格边框处理* @author: lh*/
public class Demo08 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(1);row.setHeightInPoints(30);Cell cell = row.createCell(1);cell.setCellValue("单元格边框处理");// 单元格边框处理CellStyle cellStyle = workbook.createCellStyle();cellStyle.setBorderTop(BorderStyle.THIN); // 顶部边框样式cellStyle.setTopBorderColor(IndexedColors.RED.getIndex()); // 顶部边框颜色cellStyle.setBorderLeft(BorderStyle.MEDIUM); // 左边边框样式cellStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex()); // 左边边框颜色cellStyle.setBorderRight(BorderStyle.MEDIUM); // 右边边框样式cellStyle.setRightBorderColor(IndexedColors.GREEN.getIndex()); // 右边边框颜色cellStyle.setBorderBottom(BorderStyle.MEDIUM); // 底部边框样式cellStyle.setBottomBorderColor(IndexedColors.BROWN.getIndex()); // 底部边框颜色cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

3.3 单元格填充色和颜色操作

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;/*** @Description: 设置单元格颜色* @author: lh*/
public class Demo09 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 设置单元格颜色Cell cell = row.createCell(1);cell.setCellValue("单元格边框处理");CellStyle cellStyle = workbook.createCellStyle();cellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); //背景色cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);cell.setCellStyle(cellStyle);Cell cell1 = row.createCell(2);cell1.setCellValue("单元格边框处理1");CellStyle cellStyle1 = workbook.createCellStyle();cellStyle1.setFillForegroundColor(IndexedColors.RED.getIndex()); //前景色cellStyle1.setFillPattern(FillPatternType.SOLID_FOREGROUND);cell1.setCellStyle(cellStyle1);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

3.4 单元格合并

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;import java.io.FileOutputStream;/*** @Description: 单元格合并* @author: lh*/
public class Demo10 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 合并单元格Cell cell = row.createCell(1);cell.setCellValue("合并单元格");sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 3));FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

4. 字体处理

4.1 字体处理

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 字体处理* @author: lh*/
public class Demo11 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 创建一个字体处理类Font font = workbook.createFont();font.setFontHeightInPoints((short) 24);font.setFontName("宋体");font.setItalic(true);CellStyle cellStyle = workbook.createCellStyle();cellStyle.setFont(font);Cell cell = row.createCell((short) 1);cell.setCellValue("hello world");cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

4.2 单元格中使用换行

java代码

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 单元格换行* @author: lh*/
public class Demo12 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一个sheet页");Row row = sheet.createRow(1);row.setHeightInPoints(30);Cell cell = row.createCell(2);cell.setCellValue("我要换行 \n 成功了吗?");CellStyle cellStyle = workbook.createCellStyle();// 设置可以换行cellStyle.setWrapText(true);cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

运行结果

5. 综合示例

// excel导入	
@Transactional
public Result<?> import(Model model) throws IOException
{// 获取上传附件String attId = attachFileAppService.handleAttFiles(Collections.singletonList(model));if (StringUtil.isEmpty(attId)){throw new NormalRuntimeException(ModelCodeConstants.ATTACHMENT_LOST);}Workbook workbook = null;InputStream data = null;try{// 获取Excel文件流UploadAttachFileInfo uploadAttachFileInfo = attachFileAppService.downloadFile(attId);// 文件格式校验checkType(uploadAttachFileInfo);data = uploadAttachFileInfo.getData();workbook = ExcelUtils.getExcelWorkbook(data);Sheet sheet = workbook.getSheet(ModelCodeConstants."读取sheet的名字");if (CommonUtil.isEmpty(sheet)){return Result.fail(ModelCodeConstants.ERROR_TITLE);}// 表头检验checkTitle(sheet);// 空表检验if (sheet.getLastRowNum() == 0 && sheet.getPhysicalNumberOfRows() == 1){return Result.fail(ModelCodeConstants.EMPTY_FILE);}// 数据导入- 从第四行开始int startRowIndex = 4;Iterator<Row> iterator = sheet.iterator();for (int i = 0; i < startRowIndex; i++){iterator.next();}List<XXX> list = new ArrayList<>();List<XXX> errList = new ArrayList<>();while (iterator.hasNext()){Row row = iterator.next();String xxx = getValue(row.getCell(0));String yyy = getValue(row.getCell(1));String zzz = getValue(row.getCell(2));String aaa = getValue(row.getCell(3));// 导入数据规则校验StringJoiner joiner = new StringJoiner(",");checkBody(xxx, yyy, zzz, aaa, joiner);XXX err = new XXX();if (joiner.length() != 0){err.setErrMsg(joiner);// 错误信息添加errList.add(err);} else{XXX x = new XXX();// 入库信息添加list.add(x);// 数据入库service.add();}}if (CommonUtil.isNotEmpty(errList)){//把原信息和错误信息写回去String uuid = writeErrExcel(errList);return Result.fail("数据导入不成功,点击下载错误信息!").setData(uuid);}} catch (Exception e){e.printStackTrace();return Result.fail(e.getMessage());} finally{assert workbook != null;workbook.close();data.close();}return Result.success();
}/**
* 文件格式校验 以xls或者xlsx结尾
*/
private static void checkType(UploadAttachFileInfo uploadAttachFileInfo)
{AttachFileInfo fileInfo;fileInfo = uploadAttachFileInfo.getFileInfo();if (!fileInfo.getFileName().endsWith(ModelCodeConstants.EXCEL_SUFFIX_XLS)&& !fileInfo.getFileName().endsWith(ModelCodeConstants.EXCEL_SUFFIX_XLSX)){throw new NormalRuntimeException("文件格式有误!");}
}/**
* 校验表头是否正确
*/
private static void checkTitle(Iterator<Row> rowIterator)
{Row headerRow = rowIterator.next();Cell xxxx = headerRow.getCell(0);Cell yyyy = headerRow.getCell(1);if (!"xxxx".equals(xxxx.getStringCellValue()) || !"yyyy".equals(yyyy.getStringCellValue())){throw new NormalRuntimeException(ModelCodeConstants.ERROR_TITLE);}
}/**
* 填写错误信息excel
*/
private String writeErrExcel(List<XXX> errList) throws Exception
{// 读取错误信息模板String rootPath = SpringContextConfig.getOptRootPath();String filePath = rootPath + FilePathConst.TEMPLATE_FILE_PATH + FileNameConst.WBS_CODE_ERROR_FILE_NAME;File file = ResourceUtils.getFile(filePath);InputStream inputStream = Files.newInputStream(file.toPath());// 处理导入错误信息数据Workbook workbook = ExcelUtils.getExcelWorkbook(inputStream);Sheet sheet = workbook.getSheet(ModelCodeConstants.TEMPLATE_ESTIMATE_DETAILS);int startRow = 4; // 从第五行开始写入数据CellStyle cellStyle = workbook.createCellStyle();cellStyle.setWrapText(true); // 自动换行for (int i = startRow; i < errList.size() + startRow; i++){Row row = sheet.createRow(i);XXX rowData = errList.get(i - startRow); // 获取当前行数据String xxx = rowData.getLevel();String yyy = rowData.getWbsCode();String zzz = rowData.getWbsDescribe();String aaa = rowData.getWbsAmount();String errMsg = rowData.getErrMsg();row.createCell(0).setCellValue(xxx);row.createCell(1).setCellValue(yyy);row.createCell(2).setCellValue(zzz);row.getCell(2).setCellStyle(cellStyle);row.createCell(3).setCellValue(aaa);row.createCell(4).setCellValue(errMsg);row.getCell(4).setCellStyle(cellStyle);}// Excel文件写到目标路径下String uuid = CommonUtil.getUUID();String distPath = AttachServerConfig.AttachServerTempPath + "/" + FilePathConst.ERROR_FILE_PATH + "/" + uuid+ "/" + FileNameConst.WBS_CODE_ERROR_FILE_NAME;ExcelWriter write = new ExcelWriter(sheet);write.setDestFile(new File(distPath));write.flush();write.close();InputStream distStream = new FileInputStream(distPath);uuid = attachFileAppService.uploadFile(distStream, FileNameConst.WBS_CODE_ERROR_FILE_NAME,FileModelTypeEnum.导入失败信息.getModel(), uuid, "xlsx");return uuid;
}

// 枚举常量类
public interface ModelCodeConstants
{public final String ATTACHMENT_LOST = "导入附件丢失或未找到,请重新上传!";public final String ERROR_TITLE = "表头信息错误,请使用标准模板文件导入!";public final String EMPTY_FILE = "上传文件内容为空,请确认!";}
// excel工具类
public class ExcelUtils
{	/*** 读取工作区域,传入流文件* @param input* @return*/public static Workbook getExcelWorkbook(InputStream input){Workbook workbook = null;try{workbook = WorkbookFactory.create(input);} catch (EncryptedDocumentException | InvalidFormatException | IOException e){e.printStackTrace();}return workbook;}/*** 获取不同类型单元格类型的值 * @param cell 单元格* @return 单元格内容*/private static String getValue(HSSFCell cell) {switch (cell.getCellType()) {case NUMERIC:return Double.toString(cell.getNumericCellValue());case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();case STRING:return cell.getStringCellValue();// Add cases for other cell types as needed...default:System.out.println("Unsupported cell type");return "";}}
}

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

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

相关文章

QTableView 和 QAbstractTableModel

1.自定义类继承QAbstractTableModel 头文件如下&#xff1a; #ifndef TESTMOUDLE_H #define TESTMOUDLE_H #include "StructTest.h" #include <QAbstractTableModel> class TestMoudle : public QAbstractTableModel { public: TestMoudle(QStringList&…

如何一次性解压多个文件

第一步&#xff1a;多选压缩包 第二步&#xff1a;右键解压即可 一句话&#xff0c;单个怎么解压&#xff0c;多个就怎么解压&#xff0c;只不过先选中 参考&#xff1a;如何一次性解压多个文件

智能安全帽作业记录仪赋能智慧工地人脸识别劳务实名制

需求背景 建筑工地是一个安全事故多发的场所。目前&#xff0c;工程建设规模不断扩大&#xff0c;工艺流程纷繁复杂&#xff0c;如何完善现场施工现场管理&#xff0c;控制事故发生频率&#xff0c;保障文明施工一直是施工企业、政府管理部门关注的焦点。尤其随着社会的不断进…

YARN,ZOOKEERPER--学习笔记

1&#xff0c;YARN组件 1.1YARN简介 YARN表示分布式资源调度&#xff0c;简单地说&#xff0c;就是&#xff1a;以分布式技术完成资源的合理分配&#xff0c;让MapReduce能高效完成计算任务。 YARN是Hadoop核心组件之一&#xff0c;用于提供分布式资源调度服务。 而在Hadoop …

逻辑漏洞(业务逻辑)dami CMS

逻辑漏洞&#xff08;业务支付逻辑漏洞&#xff09;dami CMS 0x01 业务逻辑简介 业务逻辑指的是一个系统或应用程序中的实际业务规则和流程。它描述了如何处理特定的业务需求、数据和操作。业务逻辑通常是根据特定行业或组织的需求而设计的。 在软件开发中&#xff0c;业务逻…

零编程基础Python的全面学习指南

文章目录 前言什么是编程&#xff1f;Python代码对应的机器码准备开始Windows变量类型整型字符串型布尔类型字符串连接和整数相加if 语句捕获用户输入导入MacWindows游戏时间&#xff01;小结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Pyt…

磐舟CI使用说明及案例

整体介绍 磐舟作为一个devops产品&#xff0c;它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的&#xff0c;在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说&#xff0c;磐舟推荐单个业务的标准git库…

反编译-ApkTool

ApkTool下载地址&#xff1a; Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 执行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 适用于桌面和 Web 应用程序的高级数据可视化 Nevron Vision for .NET提供最全面的组件&#xff0c;用于构建面向 Web 和桌面的企业级数据可视化应用程序。 该套件中的组件具有连贯的 2D 和 3D 数据可视化效果&#xff0c;对观众产生巨大的视觉冲击力。我…

基于window10的远程桌面报错:要求的函数不受支持 的问题解决方法

基于window10的远程桌面报错&#xff1a;要求的函数不受支持 的问题解决方法 设置方法&#xff1a; 一、WINR 在框内输入gpedit.msc 二、依次打开 计算机配置----管理模板-----系统—凭据分配—加密数据库修正–改为以启用—易受攻击 第一步&#xff1a; 第二步&#xff1a;…

并查集总结

并查集简介 并查集是一种可以动态维护若干个不重叠的结合&#xff0c;并支持合并与查询的数据结构 并查集是一种树状的数据结构&#xff0c;可以用于维护传递关系以及联通性。 并查集有两种操作&#xff1a; find&#xff1a;查询一个元素属于哪个集合merge:合并两个集合 模…

爆款文章有诀窍,内容创作者如何能持续产出优质内容

内容营销人有没有这么一种共鸣&#xff1a;10 万 那么多&#xff0c;为什么不能多我一个&#xff1f; 通常&#xff0c;我们把浏览量 / 阅读量高、转评赞数量高的内容看作爆款&#xff0c;而数据如果达到 10 万 则是超级爆款。因为&#xff0c;阅读量高意味着内容得到了大量的曝…

【Linux】使用Makefile自动化编译项目:简化开发流程、提高效率

文章目录 示例一&#xff1a;编译一个进度条程序示例二&#xff1a;编译一个简单的程序gcc的几个选项结论 当你开始一个新的软件项目时&#xff0c;编写一个好的Makefile是非常重要的。Makefile是一个文本文件&#xff0c;用于指定如何构建和编译项目。它定义了目标文件、依赖关…

8年老鸟整理,自动化测试-准备测试数据详细...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 大部分类型的测试…

基于C#实现Bitmap算法

在所有具有性能优化的数据结构中&#xff0c;我想大家使用最多的就是 hash 表&#xff0c;是的&#xff0c;在具有定位查找上具有 O(1)的常量时间&#xff0c;多么的简洁优美&#xff0c;但是在特定的场合下&#xff1a; ①&#xff1a;对 10 亿个不重复的整数进行排序。 ②&am…

python获取透明图

import cv2 import os import numpy as nproot "./test" for file in os.listdir(root):# 读取图片image cv2.imread(os.path.join(root, file), cv2.IMREAD_UNCHANGED)new np.zeros((image.shape[0], image.shape[1], image.shape[2]), np.uint8)# 检查图片是否为…

AI原生应用为百度带来新增量

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; AI将彻底改变每一个行业!得益于AI和基础模型的驱动&#xff0c;百度在AI原生应用领域厚积薄发。 11月21日&#xff0c;百度Q3财报发布&#xff0c;数据显示&#xff1a;三季度营收达344.47亿元&…

Redis篇---第九篇

系列文章目录 文章目录 系列文章目录前言一、如果有大量的 key 需要设置同一时间过期,一般需要注意什么?二、什么情况下可能会导致 Redis 阻塞?三、缓存和数据库谁先更新呢?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…