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,命中关键词标红的更多相关文章

  1. 通过自定义拦截器优雅的导出Excel并标红的重复数据

    平时我们导入导出Excel的时候如果用poi导出,会发现光设置格式都要很多代码,看起来非常的不优雅.后来业务中遇到了需要导入非常巨大的Excel的需求.如果继续用poi的方式,因为poi把所有exce ...

  2. php使用ajax导出CSV或者EXCEl(thinkphp)方法

    首先我强烈推荐看到这篇文章的你将导出文件设置为csv格式的文件 实际测试导出csv文件的速度是excel文件的10几倍左右 首先我先介绍csv文件的导出的方法: 如果你单纯是在数据导出界面上通过用户点 ...

  3. javaScript实现修改输入框之后标红

    <html> <title>实现标红</title> <script type="text/javascript">  functi ...

  4. Intellij IDEA @Override 标红

    Intellij IDEA 升级到15之后,之前那些@Override 的都标红,提示@Override is not allowed when implement interface method ...

  5. csv,txt,excel文件之间的转换,perl脚本

    最近接触一些需要csv,txt,excel文件之间的转换,根据一些网上搜索加上自己的改动,实现自己想要的结果为主要目的,代码的出处已经找不到了,还请见谅,以下主要是针对csv&excel 和t ...

  6. 第九篇、UITabbar增加类别用来标红点

    1.系统中只有设置bage的方式,设置为nil也是为一个红点,但是很大,并不是我们需要的 2.扩充标红点的方法 (常用于有新的动态提示标志) #import <UIKit/UIKit.h> ...

  7. Unity 读取CSV与Excel

    前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...

  8. iOS UILabel 使用姿势大全(标红关键字)

    一.初始化 ? 1 2 3 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];       ...

  9. 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 ...

  10. 14、使用csv和excel存储豆瓣top250电影信息

        记得我们第三关的时候爬取了豆瓣TOP250的电影名/评分/推荐语/链接,现在呢,我们要把它们存储下来,记得用今天课上学的csv和excel,分别存储下来哦-       URL     htt ...

随机推荐

  1. MySQL 列操作记录

    在 MySQL 中,你可以使用多种命令和语句来执行列操作,包括添加.修改.删除列等.以下是一些与列操作相关的常用 MySQL 命令和语句: 1. 添加列: 添加新列到表格中: ALTER TABLE ...

  2. Gin 框架之用户密码加密

    目录 一.引入 二.密码加密位置 三.如何加密 四.bcrypt 库加密 4.1 介绍 4.2 优点: 4.3 使用 五.小黄书密码加密实践 一.引入 Gin是一个用Go语言编写的Web框架,而用户密 ...

  3. fbx查看软件

    对于3D的模型资源,比如fbx文件,除了使用专业的软件查看外,比如Unity3D,vs2015及更高版本,maya,3DMax等等,有没有更加轻量的软件可以查看fbx的内容呢? win10自带 win ...

  4. TienChin 渠道管理-更新渠道接口开发

    ChannelController /** * 修改渠道 */ @PreAuthorize("hasPermission('tienchin:channel:edit')") @L ...

  5. GPTs prompts灵感库:创意无限,专业级创作指南,打造吸睛之作的秘诀

    GPTs prompts灵感库:创意无限,专业级创作指南,打造吸睛之作的秘诀 优质prompt展示 1.1 极简翻译 中英文转换 你是一个极简翻译工具,请在对话中遵循以下规则: - Prohibit ...

  6. SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类

    之前介绍了基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET ...

  7. 对未来的自己的一个提醒。关于打表答题的思路,洛谷P5731

    P5731 [深基5.习6]蛇形方阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题就是纯纯找规律的模拟题,但是在比赛或者思维比较松散的情况下紧张的时候会想不出模拟思路 这时 ...

  8. Java-将Oracle中某个表的数据导出成数据文件

    在做数据开发或者ETL工作中,经常会遇到需要在客户端将Oracle数据库中的某些表的数据导出,提供给其他人员使用的情况.      下面介绍我之前实施的一种方法:(该方法不是最好的办法,但是可以勉强使 ...

  9. Java设计模式-组合模式Composite

    介绍 组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系. 组合模式依据树形结构来组合对 ...

  10. CSS实现导航栏

    1.知识点 列表 浮动 伪类 背景 文本格式化 盒子模型 2.效果 3.代码 <!DOCTYPE html> <html lang="en"> <he ...