Heim  >  Artikel  >  Java  >  Was sind die grundlegenden Betriebsmethoden von Java WorkBook in Excel?

Was sind die grundlegenden Betriebsmethoden von Java WorkBook in Excel?

WBOY
WBOYnach vorne
2023-05-02 16:40:071606Durchsuche

1. Ausnahme java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException

Lösung: Die Versionen der relevanten JAR-Pakete, die für poi verwendet werden, müssen identisch sein! ! ! ! !

2. Wenn Sie Maven nicht verwenden, verwenden Sie für die von Maven verwendeten JAR-Pakete einfach zwei JAR-Pakete: poi-3.9.jar und poi-ooxml-3.9.jar (dies wird hauptsächlich für Excel 2007 und spätere Versionen verwendet). ) ()

<dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi</artifactId>
     <version>3.9</version>
</dependency>
<dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>3.9</version>
</dependency>

3. Java-Import von Excel

 Laden Sie zuerst Excel hoch

//上传Excel
@RequestMapping("/uploadExcel")
public boolean uploadExcel(@RequestParam MultipartFile file,HttpServletRequest request) throws IOException {
    if(!file.isEmpty()){
        String filePath = file.getOriginalFilename();
        //windows
        String savePath = request.getSession().getServletContext().getRealPath(filePath);
        //linux
        //String savePath = "/home/odcuser/webapps/file";
        File targetFile = new File(savePath);
        if(!targetFile.exists()){
            targetFile.mkdirs();
        }
 
        file.transferTo(targetFile);
        return true;
    }
    return false;
}

Lesen Sie den Inhalt in Excel

public static void readExcel() throws Exception{
	InputStream is = new FileInputStream(new File(fileName));
	Workbook hssfWorkbook = null;
	if (fileName.endsWith("xlsx")){
		hssfWorkbook = new XSSFWorkbook(is);//Excel 2007
	}else if (fileName.endsWith("xls")){
		hssfWorkbook = new HSSFWorkbook(is);//Excel 2003
	}
	// HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
	// XSSFWorkbook hssfWorkbook = new XSSFWorkbook(is);
	User student = null;
	List<User> list = new ArrayList<User>();
	// 循环工作表Sheet
	for (int numSheet = 0; numSheet <hssfWorkbook.getNumberOfSheets(); numSheet++) {
		//HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
		Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
		if (hssfSheet == null) {
			continue;
		}
		// 循环行Row
		for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
			//HSSFRow hssfRow = hssfSheet.getRow(rowNum);
			Row hssfRow = hssfSheet.getRow(rowNum);
			if (hssfRow != null) {
				student = new User();
				//HSSFCell name = hssfRow.getCell(0);
				//HSSFCell pwd = hssfRow.getCell(1);
				Cell name = hssfRow.getCell(0);
				Cell pwd = hssfRow.getCell(1);
				//这里是自己的逻辑
				student.setUserName(name.toString());
				student.setPassword(pwd.toString());
				list.add(student);
			}
		}
	}
}

Ergänzende Erklärung des verstümmelten Problems

1. Der Dateiname ist verstümmelt ( Ich habe festgestellt, dass, solange die Datei gelöst ist Der Name ist verstümmelt, andere verstümmelte Zeichen werden entsprechend aufgelöst) Response.setHeader("Content-disposition", "attachment; filename=Chinese. Wenn diese Methode

//创建Excel
@RequestMapping("/createExcel")
public String createExcel(HttpServletResponse response) throws IOException {
 
	//创建HSSFWorkbook对象(excel的文档对象)
	HSSFWorkbook wb = new HSSFWorkbook();
	//建立新的sheet对象(excel的表单)
	HSSFSheet sheet=wb.createSheet("成绩表");
	//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
	HSSFRow row1=sheet.createRow(0);
	//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
	HSSFCell cell=row1.createCell(0);
	//设置单元格内容
	cell.setCellValue("学员考试成绩一览表");
	//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
	sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
	//在sheet里创建第二行
	HSSFRow row2=sheet.createRow(1);
	//创建单元格并设置单元格内容
	row2.createCell(0).setCellValue("姓名");
	row2.createCell(1).setCellValue("班级");
	row2.createCell(2).setCellValue("笔试成绩");
	row2.createCell(3).setCellValue("机试成绩");
	//在sheet里创建第三行
	HSSFRow row3=sheet.createRow(2);
	row3.createCell(0).setCellValue("李明");
	row3.createCell(1).setCellValue("As178");
	row3.createCell(2).setCellValue(87);
	row3.createCell(3).setCellValue(78);
	//.....省略部分代码
	//输出Excel文件
	OutputStream output=response.getOutputStream();
	response.reset();
	response.setHeader("Content-disposition", "attachment; filename=details.xls");
	response.setContentType("application/msexcel");
	wb.write(output);
	output.close();
	return null;
}

aufgerufen wird, Antwort .setHeader("Content-disposition", "attachment; filename="+toUtf8String("Chinese.xls"));

Als ich online nachgesehen habe, hieß es

Heute möchte ich sagen, dass beim Erstellen eines Arbeitsblatts Die Verwendung von Chinesisch als Dateiname und Arbeitsblattname führt zunächst zu verstümmelten Zeichen. Der Code zum Erstellen eines Arbeitsblatts lautet im Allgemeinen wie folgt:

HSSFWorkbook workbook = new HSSFWorkbook( ; Verstümmelte Zeichen, die Lösung wie folgt:

HSSFSheet sheet= workbook.createSheet();

workbook.setSheetName(0, sheetName,(short)1); //Hier ist (short)1 der Schlüssel zum Lösen chinesischer verstümmelter Zeichen und Der erste Parameter ist die Indexnummer des Arbeitsblatts.​ ​

Aber ich habe festgestellt, dass es überhaupt keine solche Methode gibt. Ich muss nur die verstümmelten Zeichen im Dateinamen ändern und andere verstümmelte Zeichen werden auf natürliche Weise gelöst! ! !

Das obige ist der detaillierte Inhalt vonWas sind die grundlegenden Betriebsmethoden von Java WorkBook in Excel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen