CSV转Excel,命中关键词标红
CSV转Excel,命中关键词标红
package com.wenwo.schedule.job.mainJob; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.csvreader.CsvReader; /**
* 关键字过滤任务
* @author wengqi
* @date 2018-08-27
*
*/
public class CopyOfCsvToExcelTagJob { int start = 0; int firstRow = 0; int lastRow = 0; String lastID = ""; int jisuan = 0; String path_h = ""; List<Integer[]> listSz = new ArrayList<Integer[]>(); Set<String> seterror = new HashSet<String>(); public void execute(String jobData) throws Exception {
File file = new File("D://tag/csv/");
try {
for (String string : file.list()) {
System.out.println(string);
start = 0;
firstRow = 0;
lastRow = 0;
lastID = "";
jisuan = 0;
createExcel(string);
} } catch (Exception e) {
e.printStackTrace();
}
for (String iterable_element : seterror) {
System.out.println(iterable_element);
}
System.out.println("===>OK");
} public void createExcel(String fileName) throws IOException{
//获取一个HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = getHSSFCellStyle(workbook);
//创建一个sheet
HSSFSheet sheet = workbook.createSheet("Sheet"); HSSFFont jiacuFont = jiacu(workbook);
//表头
HSSFRow row = sheet.createRow(2); HSSFCellStyle styleS = workbook.createCellStyle();
styleS.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
styleS.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 读取文件
CsvReader wr = new CsvReader("D://tag/csv/" + fileName,',', Charset.forName("UTF-8"));
wr.setSafetySwitch(false);
Integer i = 0;
int index = 0;
int ii =0;
while (wr.readRecord()) {
start ++;
i++;
ii++;
try { row = sheet.createRow(ii);
List<String> list = new ArrayList<String>();
list.add(wr.getValues()[0]);
list.add(wr.getValues()[1]);
list.add(wr.getValues()[2]);
list.add(wr.getValues()[3]);
list.add(wr.getValues()[4]);
list.add(wr.getValues()[5]);
list.add(wr.getValues()[6]);
list.add(wr.getValues()[7]); for (int j = 0; j < list.size(); j++) {
try {
String keyword = list.get(1);
String word = list.get(7); // 单元格合并
if (j == 0 && StringUtils.isNotEmpty(list.get(0))){
if (list.get(0).equals(lastID)){
if (jisuan == 0){
firstRow = start-1;
}
jisuan++;
lastRow = start;
} else {
jisuan = 0;
if (firstRow != 0 && lastRow != 0){
listSz.add(new Integer[]{firstRow,lastRow});
firstRow = 0;
lastRow =0;
}
}
lastID = list.get(0);
} if(keyword.length()>32765){
keyword = keyword.substring(0, 32764);
}
if(word.length()>32765){
word = word.substring(0, 32764);
}
if(j == 7){
// 命中关键词标红
try {
row.createCell(j).setCellValue(getHSSFRichTextString(keyword ,word ,jiacuFont));
} catch (Exception e) {
e.printStackTrace();
} }
else{
row.createCell(j).setCellValue(list.get(j));
}
} catch (Exception e) {
e.printStackTrace();
} }
} catch (Exception e) {
e.printStackTrace();
}
} FileOutputStream fos = new FileOutputStream(new File("D://tag/"+fileName+".xls"));
workbook.write(fos); //将工作簿写到输出流中
fos.close(); } public HSSFFont jiacu(HSSFWorkbook workbook){
HSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
font.setColor(HSSFFont.COLOR_RED);
font.setFontHeightInPoints((short)12); // 设置字体大小
return font;
} /*
* 关键词标红
*/
public HSSFRichTextString getHSSFRichTextString(String guanjianci, String content, HSSFFont font){
HSSFRichTextString richString = new HSSFRichTextString(content);
try {
String shuzu[] = guanjianci.split("、");
for (int i = 0; i < shuzu.length; i++) {
int size = content.indexOf(shuzu[i]);
int kySize = shuzu[i].length();
richString.applyFont(size, size + kySize, font);
}
} catch (Exception e) {
// TODO: handle exception
} return richString;
} /**
* 创建一个style
*
* @param workbook
* @return
*/
private static HSSFCellStyle getHSSFCellStyle(HSSFWorkbook workbook) {
HSSFCellStyle style = workbook.createCellStyle();
//居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
return style;
}
public HSSFCellStyle getCellStyle(HSSFWorkbook workbook){
// 样式
HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直
//cellStyle.setWrapText(true);
return cellStyle;
} public static void main(String[] args) throws Exception {
CopyOfCsvToExcelTagJob job = new CopyOfCsvToExcelTagJob();
job.execute(null); }
}
CSV转Excel,命中关键词标红的更多相关文章
- 通过自定义拦截器优雅的导出Excel并标红的重复数据
平时我们导入导出Excel的时候如果用poi导出,会发现光设置格式都要很多代码,看起来非常的不优雅.后来业务中遇到了需要导入非常巨大的Excel的需求.如果继续用poi的方式,因为poi把所有exce ...
- php使用ajax导出CSV或者EXCEl(thinkphp)方法
首先我强烈推荐看到这篇文章的你将导出文件设置为csv格式的文件 实际测试导出csv文件的速度是excel文件的10几倍左右 首先我先介绍csv文件的导出的方法: 如果你单纯是在数据导出界面上通过用户点 ...
- javaScript实现修改输入框之后标红
<html> <title>实现标红</title> <script type="text/javascript"> functi ...
- Intellij IDEA @Override 标红
Intellij IDEA 升级到15之后,之前那些@Override 的都标红,提示@Override is not allowed when implement interface method ...
- csv,txt,excel文件之间的转换,perl脚本
最近接触一些需要csv,txt,excel文件之间的转换,根据一些网上搜索加上自己的改动,实现自己想要的结果为主要目的,代码的出处已经找不到了,还请见谅,以下主要是针对csv&excel 和t ...
- 第九篇、UITabbar增加类别用来标红点
1.系统中只有设置bage的方式,设置为nil也是为一个红点,但是很大,并不是我们需要的 2.扩充标红点的方法 (常用于有新的动态提示标志) #import <UIKit/UIKit.h> ...
- Unity 读取CSV与Excel
前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...
- iOS UILabel 使用姿势大全(标红关键字)
一.初始化 ? 1 2 3 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)]; ...
- 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')
解决14中csv用excel打开乱码的问题 ,其实就是在写csv的时候把 utf-8 改成 utf-8-sig open('zhihu.csv','w',newline='',encoding='ut ...
- 14、使用csv和excel存储豆瓣top250电影信息
记得我们第三关的时候爬取了豆瓣TOP250的电影名/评分/推荐语/链接,现在呢,我们要把它们存储下来,记得用今天课上学的csv和excel,分别存储下来哦- URL htt ...
随机推荐
- 使用telnet来调试游戏
telnet是什么 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力 但是,telnet因为采用明文 ...
- pycharm的docstring多了一行type
注释中多了一行:type 设置为Epytext PyCharm 2020.3.5 (Community Edition) def test(param1,param2,param3): "& ...
- 从零开始配置vim(21)——会话管理
很多代码编辑器都有这么一个功能,重新进入编辑器之后能恢复上次打开的所有文件,窗口布局,有的甚至是上次设置的一些配置.那么vim是否也可以实现这样的功能呢?答案是肯定的.使用vim自带的会话管理和 vi ...
- vim 从嫌弃到依赖(23)——最后的闲扯
截止到上一篇文章,关于vim的基础操作都已经讨论完了,这篇我主要就是闲扯,瞎聊.就想毕业论文都有一个致谢一样,这篇我们就作为整个系列的致谢吧 学习vim到底能给我们带来什么 学习vim到底能给我们带来 ...
- 在K8S中,deploy升级过程包括什么?
在Kubernetes (K8S) 中,Deployment的升级过程主要包括以下几个步骤: 更新Deployment配置: 当需要对应用程序进行升级时,通常会更新Deployment的YAML配置文 ...
- GaussDB(for MySQL)剪枝功能,让查询性能提升70倍!
作者,祝青平,华为云数据库内核高级工程师.擅长数据库优化器内核研发,9年数据库内核研发经验,参与多个TP以及AP数据库的研发工作. 近日,华为云数据库社区下面有这样一条用户提问留言:请问,如何通过My ...
- SqlSugar常见问题汇总
1.已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭. There is already an open DataReader associated with this ...
- 强化学习技巧四:模型训练速度过慢、GPU利用率较低,CPU利用率很低问题总结与分析。
1.PyTorchGPU利用率较低问题原因: 在服务器端或者本地pc端, 输入nvidia-smi 来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然 ...
- 20.5 OpenSSL 套接字RSA加密传输
RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言 ...
- grafana+prometheus+loki的使用
grafana官网:https://grafana.com/zh-cn/grafana/ grafana下载:https://grafana.com/grafana/download?pg=graf& ...