java poi读取excel Workbook类错误 5C

具体问题是报错显示workbook类找不到,但是类已经导入到工程中。烦请大神帮忙看看解决。感谢!

报错信息

 严重: Servlet.service() for servlet [com.oabkdao.servlet.IndexServlet] in context with path [/oabkdao] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook

Servlet调用XlsMain类

 XlsMain XlsMain = new XlsMain();
 XlsMain.main(null);

XlsMain类

 package com.oabkdao.io;

import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.util.Iterator;  
import org.apache.poi.hssf.usermodel.HSSFCell;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Cell;  
import org.apache.poi.ss.usermodel.Row;  
import org.apache.poi.ss.usermodel.Sheet;  
import org.apache.poi.ss.usermodel.Workbook;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;      

public class XlsMain {
    public static void main(String[] args) {  
        readXml("C:\\Users\\SJN\\Desktop\\国内改.xlsx");  
        System.out.println("-------------");  
        readXml("C:\\Users\\SJN\\Desktop\\国内改.xlsx");  
    }  
    public static void readXml(String fileName){  
        boolean isE2007 = false;    //判断是否是excel2007格式  
        if(fileName.endsWith("xlsx"))  
            {isE2007 = true;}  
        try {  
            InputStream input = new FileInputStream(fileName);  //建立输入流  
            Workbook wb  = null;  
            //根据文件格式(2003或者2007)来初始化  
            if(isE2007)  
            { wb = new XSSFWorkbook(input); } 
            else  
            { wb = new HSSFWorkbook(input);}
            Sheet sheet = wb.getSheetAt(0);     //获得第一个表单  
            Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器  
            while (rows.hasNext()) {  
                Row row = rows.next();  //获得行数据  
                System.out.println("Row #" + row.getRowNum());  //获得行号从0开始  
                Iterator<Cell> cells = row.cellIterator();    //获得第一行的迭代器  
                while (cells.hasNext()) {  
                    Cell cell = cells.next();  
                    System.out.println("Cell #" + cell.getColumnIndex());  
                    switch (cell.getCellType()) {   //根据cell中的类型来输出数据  
                    case HSSFCell.CELL_TYPE_NUMERIC:  
                        System.out.println(cell.getNumericCellValue());  
                        break;  
                    case HSSFCell.CELL_TYPE_STRING:  
                        System.out.println(cell.getStringCellValue());  
                        break;  
                    case HSSFCell.CELL_TYPE_BOOLEAN:  
                        System.out.println(cell.getBooleanCellValue());  
                        break;  
                    case HSSFCell.CELL_TYPE_FORMULA:  
                        System.out.println(cell.getCellFormula());  
                        break;  
                    default:  
                        System.out.println("unsuported sell type");  
                    break;  
                    }  
                }  
            }  
        } catch (IOException ex) {  
            ex.printStackTrace();  
        }  
    }  
}  




8个回答

Servlet.service() for servlet

web工程,需要把jar放到lib下

jar是否放到工程WEB-INF下的lib

jar包是否发布到classpath下。

jar包已经放到WEB-INF的lib 下 也导入classpath 。 报错情况依旧,同时之前尝试用jxl方法,也是报workbook找不到的错。

XlsMain类里不是有main方法啊 直接在这里测试,我测试的没有什么错,

org.apache.poi.ss.usermodel.Workbook看你报的异常是缺少这个包,看看这个包是否存在,或者看看是不是包冲突了图片说明

ctrl shift t
输入 org.apache.poi.ss.usermodel.Workbook
看看能找到几个
应该是jar冲突了

jar包用的是poi的,不是poi-ooxml,估计你下载错jar包

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java POI3.8 Excel 下载 发现不可读取内容 解决办法??

![图片说明](https://img-ask.csdn.net/upload/201701/17/1484635471_937430.png) ![图片说明](https://img-ask.csdn.net/upload/201701/17/1484635688_899413.png) ``` /** * 导出历史记录 */ @SuppressWarnings({ "deprecation", "unchecked" }) @RequestMapping("export-TrainHistoryRecord") @ResponseBody protected void buildExcelDocument(EmployeeTrainHistoryQuery query,ModelMap model, SXSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { //这里使用SXSSFWorkbook对象,支持1048576条数据 try { response.reset(); // 获得国际化语言 RequestContext requestContext = new RequestContext(request); String CourseCompany = requestContext .getMessage("manage-student-trainRecods"); response.setContentType("APPLICATION/vnd.ms-excel;charset=UTF-8"); // 注意,如果去掉下面一行代码中的attachment; 那么也会使IE自动打开文件。 response.setHeader( "Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode( DateUtil.getExportDate() + ".xlsx", "UTF-8"));//Excel 扩展名指定为xlsx SXSSFWorkbook对象只支持xlsx格式 OutputStream os = response.getOutputStream();// new CellStyle style = workbook.createCellStyle(); // 设置样式 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); String employeeCode = requestContext.getMessage("employeeCode"); String employeeName = requestContext.getMessage("employeeName"); String orgName = requestContext.getMessage("orgName"); String startDate = requestContext.getMessage("start.date"); String endDate = requestContext.getMessage("end.date"); String courseCode = requestContext.getMessage("courseCode"); String courseName = requestContext.getMessage("courseName"); String sessionName = requestContext.getMessage("sessionName"); String hoursNunber = requestContext.getMessage("hoursNunber"); // FileOutputStream(filePath); List<EmployeeTrainHistoryModel> list = null; query.setNeedQueryAll(true); try { // if("0".equals(query.getTrainFlag())){ query.setTotalItem(employeeTrainHistoryService.fetchCountEmployeeTrainHistoryByQuery(query)); int page_size = 100000;// 数据库中存储的数据行数 int list_count =query.getTotalItem(); int export_times = list_count % page_size > 0 ? list_count / page_size + 1 : list_count / page_size; for (int m = 0; m < export_times; m++) { query.setNeedQueryAll(false); query.setPageSize(100000);//每页显示多少条数据 query.setCurrentPage(m+1);//设置第几页 list=employeeTrainHistoryService.getEmployeeTrainHistoryByQuery(query); int len = list.size() < page_size ? list.size() : page_size; //新建sheet Sheet sheet = null; sheet = workbook.createSheet(System.currentTimeMillis() + CourseCompany+m); // for (int n = 0; n < len; n++) { // 迭代数据 if (list != null && list.size() > 0) { int rowNum = 1; int max_row=300000; int sheet_count=0; for (int i = 0; i < list.size(); i++) { EmployeeTrainHistoryModel history=list.get(i); //如果当前行超过单页签可容纳最大行则换页签 // if(i==0||i==(max_row*sheet_count+1)){ sheet.setDefaultColumnWidth((short) 17); // 创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个, Row header = sheet.createRow(0); // 第0行 // 产生标题列 Cell cell; String[] headerArr = new String[] { employeeCode, employeeName, orgName, startDate, endDate, courseCode, courseName, sessionName, hoursNunber }; for (int j = 0; j < headerArr.length; j++) { cell = header.createCell((short) j); cell.setCellStyle(style); cell.setCellValue(headerArr[j]); } Row row = sheet.createRow(rowNum++); row.createCell((short) 0).setCellValue( history.getEmployeeCode()); row.createCell((short) 1).setCellValue( history.getEmployeeName()); row.createCell((short) 2) .setCellValue(history.getOrgName()); if (history.getTrainBeginTime() != null) { row.createCell((short) 3).setCellValue( DateUtil.toString(history.getTrainBeginTime())); } else { row.createCell((short) 3).setCellValue(""); } if (history.getTrainEndTime() != null) { row.createCell((short) 4).setCellValue( DateUtil.toString(history.getTrainEndTime())); } else { row.createCell((short) 4).setCellValue(""); } row.createCell((short) 5).setCellValue( history.getCourseCode()); row.createCell((short) 6).setCellValue( history.getCourseName()); row.createCell((short) 7).setCellValue( history.getSessionName()); if (history.getHoursNumber() != null) row.createCell((short) 8).setCellValue( history.getHoursNumber().toString()); } } list.clear(); } } catch (Exception e) { e.printStackTrace(); } try { workbook.write(os); model.put("msg", "1"); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } ```

java poi 导出excel 把一样的数据动态合并单元格

急求,有一个list<map>数据 导出成![图片说明](https://img-ask.csdn.net/upload/201504/24/1429882933_758139.png) 这种格式 公司和年份两列是要有动态合并功能 并且年份合并的时候不能跨公司 有没有大神帮帮忙... ``` HSSFWorkbook workbook = new HSSFWorkbook(); String[] columnNames = new String[]{"编号","公司", "年份","性质", "名称","议案审核","召开时间","我方董监事","开展情况","决议"}; String[] columnKey = new String[]{"BIANHAO", "SGLWDW" ,"SGND","SGHYXZ","TITLENAME","BILLAUDIT","SGZKSJ","SGWFDS","DEVELOPMENT","DECISION"}; Map resMap = new HashMap(); try { if(list.size()==0){ resMap=new HashMap<String, String>(); resMap.put("tsBy1", "没有数据"); list.add(resMap); } HSSFSheet sheet = workbook.createSheet("sheet"+1); //首先,我们读取list中的第一个元素,根据它来确定工作表的列名,以及输出数据所对应的方法数组 Map<String,String> map2 = list.get(0); HSSFRow row = sheet.createRow(0); //创建第1行,也就是输出表头 HSSFCell cell; for(int i=0;i<columnNames.length;i++){ cell = row.createCell(i); //创建第i列 cell.setCellValue(new HSSFRichTextString(columnNames[i])); } //下面是输出各行的数据 for (int i = 0; i < list.size(); i++) { map2=(Map<String,String>)list.get(i); row=sheet.createRow(i+1);//创建第i+1行 for ( int j = 0; j < columnKey.length; j ++){ cell = row.createCell(j);//创建第j列 if(columnKey[j]==null || "".equals(columnKey[j])){ cell.setCellValue(i+1); }else{ Object obj = map2.get(columnKey[j]); cell.setCellValue(obj==null?"":obj.toString()); } } } row=sheet.createRow((short)(sheet.getLastRowNum()+1)); //在现有行号后追加数据 Region range = new Region(sheet.getLastRowNum(), (short)0, sheet.getLastRowNum(), (short)9); sheet.addMergedRegion(range); row.createCell(0).setCellValue(convoke+"家企业“已召开”,"+submit+"家企业议案“已提交”,"+archive+"家企业决议“已归档”,"+audit+"家企业议案“已审核”"); //设置第一个(从0开始)单元格的数据 OutputStream out = null; HttpServletResponse response = this.getResponse(); response.setContentType("octets/stream"); response.addHeader("Content-Disposition", "attachment;filename=_directorsDetail.xls"); try { out = response.getOutputStream(); workbook.write(out); out.close(); } catch (IOException e) { e.printStackTrace(); } ```

POI 读取Excel文件,导致内存突然增大

## 1、目标 主要实现 替换excel2003与excel2007文件中某些字符,excel文件大概15M,并且包含一些图片。首先需要读取一个excel文件映射表(不包含图片),将该映射表内容读入Map中,然后再读取待替换excel文件,并根据Map中内容替换excel文件中字符串,最后输出处理好的EXCEL文件(包含图片). ## 2、问题描述 1、本机计算机内存24G,JDK8, 在eclispe环境中运行时,可以读取并解析EXCEL映射文件,并按照Map替换目标excel文件中字符串。 2、 但是我用exe4j将项目jar打包成exe文件,在内存为8G的测试计算机上运行时,读取excel映射文件时就会导致内存占用很大,内存占用增长速度很快,瞬间导致计算机内存占满。 3、 exe4j打包使用了本地安装解压的jre包,没有把jdk打包进去。 4、 在本机(24G内存)用eclipse运行和用exe运行时,用jconsole监测了一下,读取excel映射文件时内存占用率不是很高,大概400M左右,最高不会超过1G内存。excel映射文件只有200kb左右。 ## 3 问题 请问这中情况是否与exe4j只打包了jre有关,能否用我本地安装的jre库打包到exe文件中。 为什么在我本机内存不会占满,而在其它测试机上内存过分的高。这个可能与excel文件解析的方法有关,但我不是很明白不同计算机测试效果差别这么大。 ## 4 解析excel相关代码如下 ``` //存储映射表Map,WeakHashMap <String, String> valueMap = new WeakHashMap<>() valueMap.clear(); File savedFile = new File(path); InputStream ins = null; try { ins = new FileInputStream(savedFile); } catch (FileNotFoundException e) { throw new DefException("文件"+path+"不存在",e); } Workbook wb = null; try { wb = WorkbookFactory.create(ins); } catch (InvalidFormatException e) { throw new DefException("文件"+path+"格式错误",e); } catch (IOException e) { throw new DefException("文件"+path+"导入异常",e); } //HSSFWorkbook wb = new HSSFWorkbook(ins); Sheet sheet = null; int sheetNumber = wb.getNumberOfSheets(); for (int i = 0; i < sheetNumber; i++) { sheet = wb.getSheetAt(i); //行数 int lastRowNum = sheet.getPhysicalNumberOfRows(); //读取body for (int rowNum = 1; rowNum < lastRowNum; rowNum++) { //获得当前行 Row row = sheet.getRow(rowNum); //index序列号从0开始,跳过首行,取1 if (row == null) { continue; } Cell oldm = row.getCell(1); if (oldm == null) { continue; } else { oldm.setCellType(HSSFCell.CELL_TYPE_STRING); } Cell newm = row.getCell(3); if (newm == null) { continue; } else { newm.setCellType(HSSFCell.CELL_TYPE_STRING); } String oldValue = oldm.getStringCellValue().toString(); String newValue = newm.getStringCellValue().toString(); if (!"".equals(oldValue) && !"".equals(newValue)) { valueMap.put(oldValue, newValue); } } } try { ins.close(); } catch (IOException e) { throw new DefException("关闭映射文件"+path+"错误",e); } ```

java poi修改Excel单元格格式无效

// 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(path)); HSSFCellStyle cellStyle =workbook.createCellStyle(); cellStyle.setFillBackgroundColor(HSSFColor.RED.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); ..................................... cell.setCellStyle(cellStyle); //读取excle文件, 校验单元格数据,如果格式不对。就需要修改单元格样式。

Java POI设置2013Excel的单元格的下拉菜单的值,出现的问题

**首先描述下问题,问题很奇怪:** 下拉菜单设置的所有值的总字符长度超过一定长度(目前我测的是250个汉字长度),输出Excel正常,代码不报错,但是打开输出的Excel,会出现一下提示_ ![图片说明](https://img-ask.csdn.net/upload/201802/05/1517835561_114707.png) 如果250以内,则不会有任何问题~ **看一下源码(重点部分):** ``` Workbook workbook = ExcelIO.getTempletFile("C:\\Users\\99731\\Desktop\\Report\\Template\\t1.xlsx"); Sheet sheet = workbook.getSheet("t1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); String [] list = { "哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔", "哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔", "哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔", "哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔", "哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔哇咔咔咔咔", "1" }; CellRangeAddressList addressList = new CellRangeAddressList(0,0,0,0); DataValidationHelper helper = new XSSFDataValidationHelper((XSSFSheet) sheet); XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) helper.createExplicitListConstraint(list); DataValidation dataValidation = helper.createValidation(dvConstraint, addressList); sheet.addValidationData(dataValidation); boolean result = ExcelIO.outputReport(workbook, "test1.xlsx"); System.out.println(result); ```

poi读取excel的问题

FileInputStream is; Sheet sheet; Workbook wb; Row row; try { is=new FileInputStream(file); wb=WorkbookFactory.create(is); 程序运行到这里 就没执行后续代码了 也没抛异常 file是2007版本的excel xml文件

Java 使用POI导出excel表格,无法将单元格设置为文本格式

要把表格导出后,对id信息进行修改后再导回,修改过程中输入的都是数值类型的尝试使用两种方法设置单元格的文本格式后,任然单元格会在被双击后变成科学技术法。 使用的两种设置方式,第一种如下: // 生成一个(带标题)表格 HSSFSheet sheet = workbook.createSheet(); // 表数统计 int count = 1; // 生成一个表格 workbook.setSheetName(count - 1, sheetTitle + count); // 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); // 因为导出表格式不想要数字,保留原有编号,需要设置格式 HSSFDataFormat format = workbook.createDataFormat(); style.setDataFormat(format.getFormat("@")); 第二种: cell.setCellType(HSSFCell.CELL_TYPE_STRING); 在导出的表格中,单元格格式任然为常规 ![图片说明](https://img-ask.csdn.net/upload/201808/29/1535529917_824055.png)

POI读取excel时候,总是读第一行,其他行不读,代码如下,请大神指导

![图片说明](https://img-ask.csdn.net/upload/201606/25/1466840468_355931.png) ![图片说明](https://img-ask.csdn.net/upload/201606/25/1466840487_140479.png) 为什么excel读取的行数对象 XSSFRow xssfRow = xssfSheet.getRow(rowNum); 不变呀,总是第一行 得到的List,也是全部是第一行的内容

java使用poi开源框架生成excel文件并对其进行加密登入用户名若为汉字则出现乱码

public static byte[] encryptExcel(byte[] bytes, String password, String userName) { byte[] enExcelBytes = null; try { // 创建一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(new ByteArrayInputStream(bytes)); // 设置密码 workbook.writeProtectWorkbook(password, userName); // 获得Excel文件字节数组 enExcelBytes = getExcelBytes(workbook); } catch (IOException e) { LogUtil.log(e); } return enExcelBytes; } 这是加密用的接口,userName为用户名。 打开生成加密的excel文件时用户名乱码: ![CSDN移动问答][1] ![CSDN移动问答][2] [1]: http://C:%5CUsers%5CAdministrator.DADI%5CDesktop%5CQQ%E6%88%AA%E5%9B%BE20130924165340.png

用poi 写入大数据量到excel2007,总是报错,“Java heap space”,求解决....

用poi生成excel2007 创建XSSFWorkbook对象 <br />Workbook workbook = new XSSFWorkbook(); <br />Sheet sheet = workbook .createSheet("这里第一页"); <br />FileOutputStream fos = new FileOutputStream("D://test//test0215.xlsx"); <br />for (int i = 0; i &lt; 100000; i++) { <br /> sheet.createRow(i).createCell(0).setCellValue(1); <br />} <br />workbook .write(fos);[size=small] <br />fos.close(); <br />上面测试例子,写入excel第一列,全为1,写入10w行,超过一定的数据量,比如10w,就会报“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space” ,求解决方案????

poi 3.8 读取excel 只能读出第一行的第一列的值

String fileToBeRead = "文件路径"; //读取文件 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead)); HSSFSheet sheet = workbook.getSheetAt(0); int rowNum = sheet.getPhysicalNumberOfRows(); HSSFRow row ; int cellNum; for(int i=0;i<rowNum;i++){ row = sheet.getRow(i); cellNum = row.getPhysicalNumberOfCells(); for(int j=0;i<cellNum;j++){ System.out.println(row.getCell(j).getStringCellValue()); } } Excel中我把所有的值的类型都设成了文本类型,可是只能读出第一行的第一列的值 日志信息中有一句 "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter@1dc11af]

怎么使用java Poi解决导入excel表格大数据量时的内存溢出问???大神们,帮帮我。

public String admin_product_list() { // System.out.println("myFileFileName "+myFileFileName); String path = ""; String name = ""; String realpath = ""; String afterfilename = ""; drlogbean = new Daorulog(); int daorutiaoshu = 0; String oldfilename = ""; int rowaccess=2; try { if (myFileFileName != null && !myFileFileName.equals("")) { oldfilename = myFileFileName; String b[] = oldfilename.split("\\."); // 设置上传文件目录 String filePath = ServletActionContext.getServletContext().getRealPath("/upload"); // 基于myFile创建文件输入流 InputStream is = new FileInputStream(myFile); String a[] = myFileFileName.split("\\."); // System.out.println("上传文件名:"+a[0]+"上传文件类型:"+a[1]); // 设置目标文件 DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); String strdf = df.format(date).toString(); name = "upload/" + b[0] + "_" + strdf + "." + a[1]; File toFile = new File(filePath, b[0] + "_" + df.format(date).toString() + "." + a[1]); path = filePath + "\\" + name; // System.out.println(path); // 创建一个输出流 OutputStream os = new FileOutputStream(toFile); // OutputStream bos = new // FileOutputStream(filePath);//建立一个上传文件的输出流 int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = is.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead);// 将文件写入服务器 } realpath = filePath + "\\" + b[0] + "_" + strdf + "." + a[1]; afterfilename = b[0] + "_" + strdf + "." + a[1]; System.out.println("realpath " + realpath); System.out.println("sourseTypeName " + sourseTypeName); InputStream is2 = new FileInputStream(realpath); fileRealName = realpath; SXSSWorkbook workbook =new SXSSFWorkbook(rowaccess); Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(headerRow); int lastCellNum = row.getLastCellNum(); for (int i = 0; i < lastCellNum; i++) { if (row.getCell(i) == null || row.getCell(i).toString() == null) continue; cellMap.put(i, row.getCell(i).toString()); } //每当行数达到设置的值就刷新数据到硬盘,以清理内存 if(i/rowaccess==0){ System.out.println("清除缓存重新输入"); //sheet.flushRows(); ((SXSSFSheet)sh).flushRows(); } dwzdlist = productDAO.findAlldanweizidianList(); } } catch (Exception e) { e.printStackTrace(); } malist = productDAO.findAlldanweiList(); return "importStep2"; } /** * 单位码表类型 * * @return */ public String admin_find_danweizidian() { return "danweizidian"; } // =============================2016-05-12 end public String importPreview() { int introwaccess=2;//内存中缓存记录行数 //System.out.println(kuozhan1); try { InputStream is2 = new FileInputStream(fileRealName); SXSSFWorkbook workbook = new SXSSFWorkbook(introwaccess); Sheet sheet = workbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); List<ResourceImport> riList = new ArrayList<ResourceImport>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = firstDataRow; i < lastRowNum+1; i++) { Row row = sheet.getRow(i); ResourceImport ri = new ResourceImport(); // 非标准的详细地址 String nsAddress = ""; if (row.getCell(xiangxiaddress) != null) { nsAddress = row.getCell(xiangxiaddress).toString(); ri.setYehuxiangxiaddress(nsAddress); } String nsAddressClone = nsAddress; ri.setLeibie(leibie.split(",")[0]); if (row.getCell(name) != null) { String nameR = row.getCell(name).toString(); if (nameR.contains("\n")) { String[] nameRA = nameR.split("\n"); StringBuffer sb = new StringBuffer(); for (int k = 0; k < nameRA.length; k++) { if (k != nameRA.length - 1) { sb.append(nameRA[k]); sb.append(","); } else { sb.append(nameRA[k]); } } ri.setYehuname(sb.toString()); } else { ri.setYehuname(nameR); } } if (row.getCell(tel) != null) { Cell cell = row.getCell(tel); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型 DecimalFormat df = new DecimalFormat("0");//格式化实例化数字 ri.setYehumobilephone(df.format(cell.getNumericCellValue())); } else { ri.setYehumobilephone(cell.toString()); } } if (row.getCell(sex) != null) ri.setYehusex(row.getCell(sex).toString()); if (row.getCell(age) != null) ri.setYehuage(row.getCell(age).toString()); if (row.getCell(dateofbirth) != null) ri.setYehudateofbirth(row.getCell(dateofbirth).toString()); ri.setYehuzhenjiantype(zhenjiantype); if (row.getCell(zhengjiancode) != null) ri.setYehuzhengjiancode(row.getCell(zhengjiancode).toString()); if (row.getCell(yehujinjilinkman) != null) ri.setYehujinjilinkman(row.getCell(yehujinjilinkman).toString()); if (row.getCell(yehujinjilinkmanphone) != null) { Cell cell = row.getCell(yehujinjilinkmanphone); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型 DecimalFormat df = new DecimalFormat("0");//格式化实例化数字 ri.setYehujinjilinkmanphone(df.format(cell.getNumericCellValue())); } else { ri.setYehujinjilinkmanphone(cell.toString()); } }

java利用POI写入Excel表中关于时间格式的问题。已解决,供参考

public static void writeExcel(String fileDir,String sheetName, List<Map<String , Object>> dataList){ createExcel(fileDir, sheetName, dataList); //创建workbook File file = new File(fileDir); HSSFWorkbook workbook = null; try { workbook = new HSSFWorkbook(new FileInputStream(file)); } catch(IOException e) { e.printStackTrace(); } //流 FileOutputStream out = null; HSSFSheet sheet = workbook.getSheet(sheetName); // 获取表格的总行数 int rowCount = sheet.getLastRowNum() + 1; // 需要加一 // 获取表头的列数 int columnCount = sheet.getRow(0).getLastCellNum(); //日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); HSSFCellStyle dateCellStyle=workbook.createCellStyle(); short df=workbook.createDataFormat().getFormat("yyyy-mm-dd"); dateCellStyle.setDataFormat(df); try { Row row = null; // 获得表头行对象 HSSFRow titleRow = sheet.getRow(0); Date temp = null; if(titleRow!=null){ for (int i = 0, len = dataList.size(); i < len; i++) { row = sheet.createRow(rowCount+i);//最新要添加的一行 for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { // 遍历表头 String title = titleRow.getCell(columnIndex).toString().trim(); String data = dataList.get(i).get(title).toString(); Cell cell = row.createCell(columnIndex); try{ temp = sdf.parse(data); cell.setCellType(Cell.CELL_TYPE_NUMERIC); cell.setCellValue(temp); cell.setCellStyle(dateCellStyle); sheet.setColumnWidth(columnIndex, 10 * 256); } catch(Exception e){ cell.setCellValue(data); } } } } out = new FileOutputStream(fileDir); workbook.write(out); } catch (Exception e) { e.printStackTrace(); } finally { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } }

poi读取excel时报错,之前是可以正常运行,今天突然报错,poi版本4.1.0

private static JSONArray POIReadXLSX(InputStream in){ JSONArray list = new JSONArray(); XSSFWorkbook xwb; try { xwb = new XSSFWorkbook(in); // 读取第一章表格内容 XSSFSheet sheet = xwb.getSheetAt(0); XSSFRow row = null; XSSFCell cell = null; // log.info("读取office 2007 excel内容如下:"); for (int i = sheet.getFirstRowNum(); i <= sheet.getPhysicalNumberOfRows(); i++) { row = sheet.getRow(i); if (row == null) { continue; } JSONArray linked = new JSONArray(); for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { Object value = null; cell = row.getCell(j); if (cell == null) { value = ""; }else { DecimalFormat df = new DecimalFormat("0");// 格式化 number String // 字符 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串 DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字 switch (cell.getCellType()) { case STRING: value = cell.getStringCellValue(); break; case NUMERIC: if ("@".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("General".equals(cell.getCellStyle().getDataFormatString())) { value = subZeroAndDot(nf.format(cell.getNumericCellValue())); } else { value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())); } break; case BOOLEAN: value = cell.getBooleanCellValue(); break; case BLANK: value = ""; break; default: value = cell.toString(); } } if (value == null || "".equals(value)) { value = ""; } linked.add(value.toString()); } list.add(linked); } } catch (FileNotFoundException e) { LOG.error(e); e.printStackTrace(); } catch (IOException e) { LOG.error(e); e.printStackTrace(); } return list; } ![图片说明](https://img-ask.csdn.net/upload/201909/14/1568471293_526193.png)

POI读取excel的时候,空值不读取的问题,求大神指导

``` private void loadUserInfo(String str2,String filename2) { String uploadFileFileName=str2+filename2; Logger logger = LoggerUtil.getLoggerByName(str2); // 读取刚才上传文件,确保路径相同 // String uploadFileFileName=str1+filename1; System.out.println("11212" + uploadFileFileName); // System.out.println(str1+"+"+filename1); String directory = "/upload"; String targetDirectory = ServletActionContext.getServletContext() .getRealPath(directory); File target = new File(targetDirectory, uploadFileFileName); Workbook wb = null; try { FileInputStream fi = new FileInputStream(target); if (uploadFileFileName.toLowerCase().endsWith("xls")) { wb = new HSSFWorkbook(fi); } else if (uploadFileFileName.toLowerCase().endsWith("xlsx")) { wb = new XSSFWorkbook(fi); } Sheet sheet = wb.getSheetAt(0); int rowNum = sheet.getLastRowNum() + 1; lists = new ArrayList<Muju>(); // i 从1开始表示第一行为标题 不包含在数据中 Muju muju = null; for (int i = 1; i < rowNum; i++) { muju = new Muju(); Row row = sheet.getRow(i); int cellNum = row.getLastCellNum(); for (int j = 0; j < cellNum; j++) { Cell cell = row.getCell(j); String cellValue = null; switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库 case 0: String s = String.valueOf(cell.getNumericCellValue()); if (s.endsWith(".0")) { cellValue = String.valueOf((int) cell .getNumericCellValue()); } else cellValue = String.valueOf(cell .getNumericCellValue()); break; case 1: cellValue = cell.getStringCellValue();System.out.println("kanka22n="+cellValue); break; case 2: cellValue = String.valueOf(cell.getDateCellValue()); break; case 3: System.out.println("asasas"); cellValue = ""; break; case 4: cellValue = String.valueOf(cell.getBooleanCellValue()); break; case 5: cellValue = String.valueOf(cell.getErrorCellValue()); break; } System.out.println("kanka33n="+cellValue); switch (j) {// 通过列数来判断对应插如的字段 case 0: muju.setVendor(cellValue); break; case 1: muju.setItem(cellValue); break; case 2: muju.setKmcishu(Integer.parseInt(cellValue)); break; case 3: muju.setSycishu(Integer.parseInt(cellValue)); break; case 4: muju.setXianelv(Double.parseDouble(cellValue)); break; case 5: muju.setLjcishu(Integer.parseInt(cellValue)); break; case 6: muju.setFqcishu(Integer.parseInt(cellValue)); break; } } lists.add(muju); } Muju muju2 = null; for (int f = 0; f < lists.size(); f++) { muju2 = lists.get(f); System.out.println(lists); System.out.println(lists.get(f).getVendor()); System.out.println(lists.get(f).getItem()); System.out.println(lists.get(f).getKmcishu()); System.out.println(lists.get(f).getSycishu()); System.out.println(lists.get(f).getXianelv()); System.out.println(lists.get(f).getLjcishu()); System.out.println(lists.get(f).getFqcishu()); Mujudao mjd = new Mujudao(); Muju mj = mjd.itemandvendor(lists.get(f).getVendor(), lists.get(f).getItem()); System.out.println(mj); if (mj == null) { logger.debug(changliang.shibai1(f+1, muju2.getVendor(), muju2.getItem())); } else { int a = mjd.updateitemandvendor(muju2.getVendor(), muju2.getItem(), muju2.getKmcishu(), muju2.getSycishu(), muju2.getXianelv(), muju2.getLjcishu(), muju2.getFqcishu()); if(a==0){ logger.debug(changliang.shibai2(f+1)); } else logger.debug(changliang.chenggong(f+1)); } } } catch (IOException e) { e.printStackTrace(); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201608/17/1471415652_612076.png) 如果图片是上图这样,就会出错,空值以后的数据全都不会被导入(下面的代码都不执行了,也没出任何异常) 如果图片是下图这样,却能正常导入 ![图片说明](https://img-ask.csdn.net/upload/201608/17/1471415628_373298.png) 但是,无论如何,我中间的,取空值时候的代码 System.out.println("asasas");都不会执行 求教大神这是怎么回事

java poi 操作execl表格如何读取一列信息

在Javaweb中。已将execl表头取出存入mysql数据库。现在我要根据表头中的列名取得那一列的数据并求和。请问大神们我该怎么去实现

apache poi解析Excel时报错,我将Excel打开后保存,就不会报错

大家帮帮忙,我用poi解析Excel文件时,报如下错误,我打开Excel在保存就不会打错, org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x86 left 2 bytes remaining still to be read. at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:156) at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:231) at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:443) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:280) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:243) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:187) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:322) at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:303) at com.saitejn.services.impl.JF_UploadServicesImpl.readJfXls(JF_UploadServicesImpl.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at com.sun.proxy.$Proxy36.readJfXls(Unknown Source) at com.saitejn.controller.JF_UploadController.doFileUpload(JF_UploadController.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:724)

POI读取07版excel异常,急!!!

读取03版excel正常但是07会报下面的错误, org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

POI 如何读取EXcel表,之后如何存入List集合中

FileInputStream fis = new FileInputStream( "E:\\215e_2016-11-28-15-06-00.xls"); HSSFWorkbook wb = new HSSFWorkbook(fis); System.out.println(wb); // 获取整个excel有多少个sheet HSSFSheet sheet = wb.getSheetAt(0); System.out.println(sheet); // 总行数 int rowNum = sheet.getPhysicalNumberOfRows(); System.out.println(rowNum); // 第一行 int sheetCount = wb.getNumberOfSheets(); System.out.println(sheetCount); for (int i = 0; i < sheetCount; i++) { sheet = wb.getSheetAt(i); rowNum = sheet.getPhysicalNumberOfRows(); int cellNum = sheet.getRow(0).getPhysicalNumberOfCells(); for (int j = 0; j < rowNum; j++) { HSSFRow row = sheet.getRow(j); System.out.println(row); for (short k = 0; k < cellNum; k++) { HSSFCell cell = row.getCell(k); System.out.println(cell); if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { System.out.println(cell.getStringCellValue()); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { System.out.println(cell.getNumericCellValue()); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) { System.out.println(cell.getBooleanCellValue()); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) { System.out.println("NULL"); } else { System.out.println(cell.getDateCellValue()); } } } } }

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐