java 实现EXCEL导出 固定列宽,字段超长则自动换行
时间: 2023-07-20 15:05:43 浏览: 323
在Java中实现Excel导出可以使用Apache POI库。要实现固定列宽和自动换行,可以使用CellStyling来设置单元格样式。
以下是一个示例代码,可以实现导出Excel时固定列宽、自动换行的功能:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelExporter {
public static void export(String[][] data, String[] headers, String fileName) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
// 设置列宽度为15个字符
sheet.setColumnWidth(0, 15 * 256);
sheet.setColumnWidth(1, 15 * 256);
sheet.setColumnWidth(2, 15 * 256);
// 创建头行
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
}
// 创建数据行
CreationHelper createHelper = workbook.getCreationHelper();
for (int i = 0; i < data.length; i++) {
Row row = sheet.createRow(i + 1);
for (int j = 0; j < data[i].length; j++) {
Cell cell = row.createCell(j);
cell.setCellValue(createHelper.createRichTextString(data[i][j]));
// 设置单元格样式,包括固定列宽和自动换行
XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
style.setWrapText(true);
cell.setCellStyle(style);
}
}
// 写入文件
FileOutputStream fileOut = new FileOutputStream(fileName);
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
}
```
该代码将数据和表头作为输入,并将其写入Excel文件中。在创建单元格时,使用CellStyling来设置单元格样式,并使用setWrapText方法来启用自动换行。固定列宽可以通过setColumnWidth方法来设置。
使用该代码的示例:
```java
public class Main {
public static void main(String[] args) throws IOException {
String[][] data = {
{"John Smith", "Software Engineer", "San Francisco, CA"},
{"Jane Doe", "Product Manager", "New York, NY"},
{"Bob Johnson", "Sales Representative", "Chicago, IL"}
};
String[] headers = {"Name", "Title", "City"};
ExcelExporter.export(data, headers, "output.xlsx");
}
}
```
该代码将生成一个名为“output.xlsx”的文件,其中包含带有固定列宽和自动换行的数据和表头。
阅读全文