我是靠谱客的博主 标致小馒头,最近开发中收集的这篇文章主要介绍java 写excel文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在文本内容结构化抽取时,经常需要将抽取的结果写到excel文档中,这里针对新建excel文档和针对已经存在的excel追加内容的操作,进行记录。

一、Excel基本概念
Workbook:工作簿,代表一个Excel文件。Excel分为两种,后缀名为xls的HSSFWorkBook(2003版本及以前),和后缀名为xlsx的XSSFWorkBook(2007版本及以后)
Sheet:表格,一个Workbook中可以有多个表格。
Row:行(通过Sheet可以获取到某一行)
Cell:单元格(通过Row可以获取到某个单元格,单元格中存放数据)
二/引用依赖

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.2</version>

</dependency>

String style = path.substring(path.lastIndexOf(".") + 1, path.length());
		Workbook workbook;
		File file = new File(path);
		boolean flag=false;
		if(file.exists()) {
			flag = true;
			FileInputStream fs = new FileInputStream(path);
			if ("XLS".equals(style.toUpperCase())) {
				// 使用POI提供的方法得到excel的信息
				POIFSFileSystem ps = new POIFSFileSystem(fs);
				workbook = new HSSFWorkbook(ps);
			} else {
				workbook = new XSSFWorkbook(fs);
			}
		}else {
			if ("XLS".equals(style.toUpperCase())) {
				workbook = new HSSFWorkbook();
			} else {
				workbook = new XSSFWorkbook();
			}
		}
		//遍历输入的数据集
		System.out.println(resultDataSets.length+" "+path);
		for(int i=0;i<resultDataSets.length;++i) {
			ResultDataSet resultDataSet=resultDataSets[i];
			// 生成一个表格
			System.out.println(i+" name="+resultDataSet.getTableName());
			Sheet sheet = null;
			if(!flag){
				sheet = workbook.createSheet(resultDataSet.getTableName());
				// 设置表格默认列宽度为15个字节
				sheet.setDefaultColumnWidth((short) 15);
			}else {
				sheet = workbook.getSheetAt(0);
			}
		
			//获取字段名称和字段值列表
			ArrayList<ResultField> fields =  (ArrayList<ResultField>) resultDataSet.getFields();
			ArrayList<ResultRecord> records = (ArrayList<ResultRecord>) resultDataSet.getRecords();
			//构建标题行
			Row row = sheet.createRow(0);
			Cell cell = row.createCell(0);
			cell.setCellValue("ID");
			
			for(int j=0;j<fields.size();++j) {
				ResultField field = fields.get(j);
				cell = row.createCell(j+1);
				cell.setCellValue(field.getFieldName());
			}
			int index = sheet.getLastRowNum();
			//对于数据,依次写入数据的各个字段
			for(int j=0;j<records.size();++j) {
				ResultRecord record= records.get(j);
				index++;
				row = sheet.createRow(index);
				cell=row.createCell(0);
				cell.setCellValue(index);
				
				for(int k=0;k<fields.size();++k) {
					ResultField textField = fields.get(k);
					cell = row.createCell(k + 1);
					FieldType fieldType = textField.getFieldType();
					switch (fieldType) {
					//STRING, INT, FLOAT, DOUBLE, DATE
					case STRING:
						cell.setCellValue((String) record.getFieldValue(k));
						break;
					case FLOAT:
						cell.setCellValue((float) record.getFieldValue(k));
						break;
					case INT:
						cell.setCellValue((int) record.getFieldValue(k));
						break;
					case DOUBLE:
						cell.setCellValue((double)record.getFieldValue(k));
						break;
					default:
						break;
					}
					
					
				}
						
				
			}
		}
		file =  new File(path);
		
		OutputStream outputStream = null;
		try {
			outputStream = new FileOutputStream(file);
			workbook.write(outputStream);
			outputStream.flush();
	
		} catch (Exception e) {
			throw e;
		} finally {
			try {
				if (null != outputStream) {
					outputStream.close();
				}
			} catch (Exception e) {
				throw e;
			}
		}		

最后

以上就是标致小馒头为你收集整理的java 写excel文件的全部内容,希望文章能够帮你解决java 写excel文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部