java 写excel文件

Posted 一休Q_Q

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件

java 写excel文件

如何用java读取excel中的数据?下面的例子不能读出自己写的excel数据

java里将从excel读到的数据用csv导出,代码怎么写

java jxls导入excel 的多个sheet 代码该如何写 配置文件怎么写? 还有jxls 能读入07 excel吗?

java写了一个下载excel的功能,我想把用户下载的模版的所有单元格都变成文本格式。该如何写呢?