Java 打开Excel,往Excel中存入值,保存的excel格式分别是xls和xlsx
https://mirrors.cnnic.cn/apache/poi/xmlbeans/release/src/
package Excel; import org.apache.poi.hssf.usermodel.HSSFCell; 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.CellType; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class WriteExcel { Date dt = new Date(); SimpleDateFormat format = new SimpleDateFormat("YYYYMMddHHmmss"); String time = format.format(dt); public void WriteExcelxls() { FileOutputStream out = null; try { out = new FileOutputStream(new File(".\\Log\\旧的EXCEL文件_"+time+".xls")); HSSFWorkbook workxls = new HSSFWorkbook(); HSSFSheet sheet = workxls.createSheet(time); HSSFRow row = workxls.getSheet(time).createRow(0); for (short i = 0; i < 10; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue("测试" + i); } sheet.createRow(1).createCell(1).setCellValue("1234567890"); sheet.createRow(2).createCell(0).setCellValue(Calendar.getInstance()); sheet.createRow(3).createCell(0).setCellValue("字符串"); sheet.createRow(4).createCell(0).setCellValue(true); sheet.createRow(5).createCell(0).setCellType(CellType.ERROR); workxls.write(out); out.close(); System.out.println("旧的EXCEL文件_.xls written successfully on disk."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void WriteExcelxlsx() { File file = new File(".\\Log\\新的EXCEL文件_"+time+".xlsx"); FileOutputStream out = null; try { out = new FileOutputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(); XSSFRow row = workbook.createSheet(time).createRow(0); XSSFSheet sheet = workbook.getSheet(time); for (short i = 0; i < 10; i++) { XSSFCell cell = row.createCell(i); cell.setCellValue("新的EXCEL文件" + i); } sheet.createRow(1).createCell(1).setCellValue("1234567890"); sheet.createRow(2).createCell(0).setCellValue(Calendar.getInstance()); sheet.createRow(3).createCell(0).setCellValue("字符串"); sheet.createRow(4).createCell(0).setCellValue(true); sheet.createRow(5).createCell(0).setCellType(CellType.ERROR); workbook.write(out); out.close(); System.out.println("新的EXCEL文件_.xlsx written successfully on disk."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
package Excel; import org.testng.annotations.Test; public class TestExcel { @Test(priority = 1) private void Testold() { WriteExcel aaa = new WriteExcel(); aaa.WriteExcelxls(); } @Test(priority = 2) public void Testnew() { WriteExcel aaa = new WriteExcel(); aaa.WriteExcelxlsx(); } }
依赖:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Jasmine</groupId> <artifactId>Test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.13.1</version> </dependency> </dependencies> </project>
package Excel; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.CellType; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class WriteExcelMore { static Date dt = new Date(); static SimpleDateFormat format = new SimpleDateFormat("YYYYMMddHHmmss"); static String time = format.format(dt); public static void main(String args[]) { File file = new File(".\\Log\\新的EXCEL文件_" + time + ".xls"); FileOutputStream out = null; try { out = new FileOutputStream(file); HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个新的excel HSSFSheet sheet = workbook.createSheet(time); //创建sheet页 HSSFHeader header = sheet.getHeader();//创建header页 header.setCenter("Title"); HSSFRow[] row = new HSSFRow[3]; row[0] = sheet.createRow(0); HSSFCell headerCell = row[0].createCell(5); headerCell.setCellValue(new HSSFRichTextString("标题")); //HSSFRow row = workbook.getSheet(time).createRow(3); row[1] = sheet.createRow(1); for (short i = 0; i < 5; i++) { HSSFCell cell = row[1].createCell(i); cell.setCellValue("新的EXCEL文件" + i); } row[2] = sheet.createRow(2); String[] arr = new String[5]; String[] arr2 = {"aa", "bb", "cc", "dd", "ee"}; for (short i = 0; i < 5; i++) { HSSFCell cell = row[2].createCell(i); cell.setCellValue(arr2[i]); } sheet.createRow(5).createCell(1).setCellValue("1234567890"); sheet.createRow(6).createCell(0).setCellValue(Calendar.getInstance()); sheet.createRow(7).createCell(0).setCellValue("字符串"); sheet.createRow(8).createCell(0).setCellValue(true); sheet.createRow(9).createCell(0).setCellType(CellType.ERROR); //设置footer sheet.setGridsPrinted(false); HSSFFooter footer = sheet.getFooter(); footer.setRight("page " + HeaderFooter.page() + "of" + HeaderFooter.numPages()); workbook.write(out); out.close(); System.out.println(file + " written successfully on disk."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
遇到的错如下:
1. Exception in thread "main" java.lang.NoClassDefFoundError:
org/dom4j/DocumentExceptionCaused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
2. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile
3. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
4. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
5. java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.0.0</version>
</dependency>
6. java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
7. java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.18</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
8. java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
上述都是包的问题,后来新建了一个项目,换成maven管理依赖包,一次性解决了。
update 20181122
将上述代码拖到UI自动化项目中,发现执行报各种错误,已添加到上面。
都是jar包的问题,但是我已经将测试成功项目中的pom文件中的jar包都下载来了,却还是报各种错,解决了一个又遇到下一个。 (┬_┬)
maven打包,因为网络问题,有时候有的包未能下载下来,就自己下载jar包引用,可是(┬_┬)(┬_┬)无力
苦心人天不负,三千越界可吞吴。哈哈哈哈,在尝试了千万遍之后,终于成功了,下面是所有新引入的jar包,百度网盘链接如下:
其中红框框是为了解决excel中xlsx格式而引入的一系列jar包。
链接:https://pan.baidu.com/s/1JhKENJU1PLlgOwyrnptilg
提取码:ip2u
链接若失效,请联系我