问题描述
我需要做一份EXCEL模具进度表,请高手们帮下忙现在需要在同一单元格里不同的文字分别用不同的颜色表示进度。比如:我在A2和A4中同时记录“电火花-电脑锣-钳工”现在我在A2中把“电火花”着色为红色我需要在A4中的“电火花”几个字也变成红色,请问怎么样才能实现?不要说我可以用多个单元格,我上面的只是个例子,现实中有很多工序,可能有许多类似的表格。请高手们帮下忙,万分感谢!
解决方案
解决方案二:
我举例说明,看你能不能改一下publicclassProjectInformCSVActionextendsActionSupport{privatestaticLoggerlog=Logger.getLogger(ProjectInformCSVAction.class);/***项目名称*/privateStringipoName;/***项目管理Service*/privateProjectManagerServiceprojectManagerService;publicStringgetIpoName(){returnipoName;}publicvoidsetIpoName(StringipoName){this.ipoName=ipoName;}publicvoidsetProjectManagerService(ProjectManagerServiceprojectManagerService){this.projectManagerService=projectManagerService;}publicInputStreamgetInputStream(){FileInputStreamfis=null;/***判断项目参数是否为空*/try{if(ipoName!=null&&!ipoName.equals("")){try{ipoName=java.net.URLDecoder.decode(ipoName,"UTF-8");}catch(UnsupportedEncodingExceptione){log.error(e.getMessage());}}List<ProjectManageVO>projectManageVos=newArrayList<ProjectManageVO>();try{/***获取所有数据list*/projectManageVos=projectManagerService.getProjectsBylikeipoName(ipoName);/***把二维数组写成csv文件导出*/String[][]csvReport;if(projectManageVos!=null){csvReport=ConvertListtoArrayString(projectManageVos);}else{csvReport=newString[][]{{"序号","ipo公司名称","创建日期","当前状态","保荐机构","关联文件名"}};}Stringfilepath=projectManagerService.getRefreshFilePath("getrootdirectory","csvRootDirectory");FiletempFile=newFile(filepath+File.separator+"projectlist.csv");CSVWriterwriter=null;try{//writer=newCSVWriter(newFileWriter(tempFile));writer=newCSVWriter(newOutputStreamWriter(newFileOutputStream(tempFile),"gbk"));for(inti=0;i<csvReport.length;i++){writer.writeNext(csvReport[i]);}fis=newFileInputStream(tempFile);}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{try{if(writer!=null){writer.close();}}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}catch(IPOExceptione){log.error(e.getMessage());}}catch(IPOExceptione){log.error(e.getMessage());}returnfis;}/***把数据转为二维数据*@paramlist*@return*/publicString[][]ConvertListtoArrayString(List<ProjectManageVO>list){inta=list.size();String[]array0=newString[]{"序号","ipo公司名称","创建日期","当前状态","保荐机构","关联文件名"};String[][]array=newString[a+1][6];for(inti=0;i<=list.size();i++){if(i==0){array[i][0]="序号";array[i][1]="ipo公司名称";array[i][2]="创建日期";array[i][3]="当前状态";array[i][4]="保荐机构";array[i][5]="关联用户名";}else{array[i][0]=i+"";array[i][1]=list.get(i-1).getIpoName();array[i][2]=list.get(i-1).getOperTime();if(list.get(i-1).getState().startsWith("0")){array[i][3]="没有完成项目";}elseif(list.get(i-1).getState().startsWith("1")){array[i][3]="已完成项目";}else{array[i][3]="撤销项目";}array[i][4]=list.get(i-1).getUwName();array[i][5]=list.get(i-1).getUserName();}}returnarray;}publicStringgetDownloadFileName(){/***返回给前台下载框中的文件名*/StringdownloadFileName="项目列表.csv";try{HttpServletResponseresponse=ServletActionContext.getResponse();/***设置文件头类型*///response.setContentType("application/x-msdownload");response.setContentType("text/csv");/***转码文件名*/downloadFileName=java.net.URLEncoder.encode(downloadFileName,"UTF-8");}catch(UnsupportedEncodingExceptione){e.printStackTrace();}returndownloadFileName;}}
解决方案三:
给你点建议,你可以先把Excel的单元格中的字体“电火花”设成红色,然后读取一下Cell对象,看看cell对象中是通过什么标记这个单元格中的字体颜色的,然后你在做的时候就可以把相应Cell中的“电火花”都标记成红色了。
解决方案四:
开源POI库中,用于操作excel,有相关的方法可以设置cell的颜色