如何使用Java在电子表格中创建不同数据格式的单元格?
excel中的格式化是excel中的一个巧妙技巧,用于更改工作表中表示的数据的外观,格式化可以通过多种方式完成,例如我们可以使用样式来格式化单元格的数据。默认情况下,所有工作表单元格都采用常规数字格式。使用常规格式,您在单元格中键入的任何内容通常都保持原样。
示例:如果在单元格中输入 11111.25,然后将格式设置为“0.0”,则表示小数点后只有一位,单元格内容显示为 11111.3。这种格式用于根据要求获取准确的数据。让我们讨论一下如何使用Java来做到这一点。
方法:
- 导入所有必要的 .jar 文件,如 XSSF、XML。
- 创建工作簿实例
- 在上述工作簿中创建一个电子表格。
- 使用 XSSFRow 创建行
- 使用 XSSFCell 创建一个单元格。
- 设置单元格值。
- 使用 XSSFCellStyle 创建样式,我们将在其中应用不同的样式。
- 设置格式数据。
- 通过定义 FileOutputStream 类型的对象将内容写入工作簿
- 关闭文件的连接。
程序:
- 在 Eclipse 中创建一个 Maven 项目并添加 Apache POI(用于设置单元格的值类型)并导入所有必要的 .jar 文件,如 HSSF、XML。
- 为工作簿命名。
- 使用“new XSSFWorkbook()”创建一个工作簿,我们必须在其中创建电子表格。
- 使用“workbook.createSheet('Sheet1')”在工作簿中创建一个电子表格,并将工作表的名称命名为“Sheet1”
- 使用 XSSFRow 创建一行。行是基于 0 的。
- 使用 XSSFCell 创建一个单元格。
- 使用 XSSFCellStyle 创建样式,我们将在其中应用不同的样式。
- 使用 DataFormat “workbook.createDataFormat()” 创建格式以在单元格中应用自定义格式。
- 使用 cell.setCellValue() 为单元格设置值;
- 将格式应用于特定单元格。根据要求重复此步骤以使用 style.setDataFormat(format.getFormat(“”)); 创建格式化单元格。格式类型应该是字符串类型。
- 将输出文件放在默认位置,并使用 FileOutputStream() 保存在 try-catch 块中。
- 使用 workbook.write() 将其写入在初始步骤中创建的工作簿;
- 关闭输出文件。
- 当程序成功执行时显示控制台窗口的消息。
- 当程序不成功时显示控制台窗口的错误消息,此语句保留在 catch 块中。
例子:
Java
// Java Program to Apply Different Data Formats to
// a Cell in a Spreadsheet
// Importing required classes
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
// Main class
class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Naming of WorkBook
String excelfilename = "GeeksForGeeks.xlsx";
// Creating a WorkBook
XSSFWorkbook workbook = new XSSFWorkbook();
// Create a Spread Sheet by creating an object of
// XSSFSheet and also give name
XSSFSheet spreadsheet
= workbook.createSheet("Sheet1");
// Create a row and put some cells in it. Rows are 0
// based.
XSSFRow row;
// Creating a cell
XSSFCell cell;
// style
XSSFCellStyle style;
// Creating format to format style
DataFormat format = workbook.createDataFormat();
int rowNum = 0;
int colNum = 0;
// Creating a row in Spread Sheet
row = spreadsheet.createRow(rowNum++);
// Creating a cell in row
cell = row.createCell(colNum);
// Setting a value
cell.setCellValue(11111.25);
style = workbook.createCellStyle();
// Setting a Format to a cell using style
style.setDataFormat(format.getFormat("0.0"));
cell.setCellStyle(style);
row = spreadsheet.createRow(rowNum++);
cell = row.createCell(colNum);
cell.setCellValue(11111.25);
style = workbook.createCellStyle();
// Creating another format using style
style.setDataFormat(format.getFormat("#,##0.0000"));
cell.setCellStyle(style);
// Try block to check for exceptions
try {
// Place the output file in default location and
// also kept in try catch block
FileOutputStream outputfile
= new FileOutputStream(excelfilename);
// Writing to workbook
workbook.write(outputfile);
// Closing the output file
// using close() method
outputfile.close();
// Display message for console window when
// program is successfully executed
System.out.println(excelfilename
+ " is written successfully");
}
// Catch block to handle exceptions
catch (FileNotFoundException e) {
// Display error message for console window when
// program is not successfully executed
System.out.println("ERROR!! " + e.getMessage());
}
}
}
输出:在控制台窗口
A.当程序成功执行时。
GeeksForGeeks.xlsx is written successfully.
B.当程序没有成功执行时。
ERROR!! GeeksForGeeks.xlsx (The process cannot access the file because it is being used by another process)
输出:工作簿(excel文件)