Java 如何在ApachePOI中设置固定列宽
如何在ApachePOI中设置固定列宽。 我想将我的第一列设置为固定宽度 我已尝试使用sheet.setColumnWidth(0,1000); cellStyle.setWrapText(true)//设置未反映的文字包装Java 如何在ApachePOI中设置固定列宽,java,apache-poi,Java,Apache Poi,如何在ApachePOI中设置固定列宽。 我想将我的第一列设置为固定宽度 我已尝试使用sheet.setColumnWidth(0,1000); cellStyle.setWrapText(true)//设置未反映的文字包装 public XSSFWorkbook generateReport(List<Dto> result, boolean isRes, boolean isRes1) { XSSFWorkbook workbook = null; XSS
public XSSFWorkbook generateReport(List<Dto> result, boolean isRes, boolean isRes1) {
XSSFWorkbook workbook = null;
XSSFSheet sheet = null;
XSSFRow row = null;
XSSFCell cell = null;
String[] headers = null;
int rowNum = 0;
int colNum = 0;
CellStyle cellStyle = null;
CellStyle headerStyle = null;
XSSFFont font = null;
CellStyle datecellStyle = null;
/* set the weight of the font */
try {
workbook = new XSSFWorkbook();
headers = new String[] { ...values goes here...};
row = sheet.createRow(rowNum);
font = workbook.createFont();
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
headerStyle = workbook.createCellStyle();
headerStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
headerStyle.setFillForegroundColor((short) 200);
headerStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
headerStyle.setFont(font);
cellStyle = workbook.createCellStyle();
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
datecellStyle = workbook.createCellStyle();
datecellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("dd-MMM-yyyy"));
datecellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
/**
* Writing Headers
*/
for (String header : headers) {
cell = row.createCell(colNum);
cell.setCellValue(header);
cell.setCellStyle(headerStyle);
++colNum;
}
/**
* Writing Other Rows
*/
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
for (Dto detail : result) {
++rowNum;
colNum = 0;
row = sheet.createRow(rowNum);
cell = row.createCell(colNum);
//sheet.setColumnWidth(0, 4000);
cell.
if(null != detail.getGid()){
cell.setCellValue(detail.getGid());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getName()){
cell.setCellValue(detail.getName());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getNGid()){
cell.setCellValue(detail.getNGid());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
++colNum;
cell = row.createCell(colNum);
if(null != detail.getName()){
cell.setCellValue(detail.getName());
}else{
cell.setCellValue("-");
}
cell.setCellStyle(cellStyle);
}
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
sheet.createFreezePane(1, 1);
} catch (Exception e) {
e.printStackTrace();
}
return workbook;
}
公共XSSFWorkbook generateReport(列表结果、布尔ISRE、布尔isRes1){
XSSF工作簿=空;
XSSFSheet=null;
XSSFRow行=null;
XSSFCell单元=null;
String[]headers=null;
int rowNum=0;
int colNum=0;
CellStyle CellStyle=null;
CellStyle headerStyle=null;
XSSFFont font=null;
CellStyle datecellStyle=null;
/*设置字体的重量*/
试一试{
工作簿=新XSSFWorkbook();
headers=新字符串[]{…值在此处…};
行=sheet.createRow(rowNum);
font=workbook.createFont();
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
headerStyle=workbook.createCellStyle();
头部样式。底部(HSSFCellStyle。中边框);
头部样式。后坐式顶部(HSSFCellStyle。中边框);
标题样式。右(HSSFCellStyle。边框为中);
头部样式。左(HSSFCellStyle。中边框);
headerStyle.setFillForegroundColor((短)200);
headerStyle.setFillPattern(XSSFCellStyle.SOLID_前景);
headerStyle.setFont(字体);
cellStyle=workbook.createCellStyle();
cellStyle.SetboordBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
datecellStyle=workbook.createCellStyle();
datecellStyle.setDataFormat(工作簿.getCreationHelper().createDataFormat().getFormat(“dd MMM yyyy”);
datecellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
datecellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
/**
*写标题
*/
for(字符串标题:标题){
cell=row.createCell(colNum);
cell.setCellValue(表头);
cell.setCellStyle(headerStyle);
++科尔纳姆;
}
/**
*写其他行
*/
SimpleDataFormat日期\格式=新的SimpleDataFormat(“dd-MMM-yyy-HH:mm:ss”);
用于(数据到详细信息:结果){
++罗纳姆;
colNum=0;
行=sheet.createRow(rowNum);
cell=row.createCell(colNum);
//表。设置柱宽(0,4000);
牢房。
if(null!=detail.getGid()){
cell.setCellValue(detail.getGid());
}否则{
cell.setCellValue(“-”);
}
cell.setCellStyle(cellStyle);
++科尔纳姆;
cell=row.createCell(colNum);
if(null!=detail.getName()){
cell.setCellValue(detail.getName());
}否则{
cell.setCellValue(“-”);
}
cell.setCellStyle(cellStyle);
++科尔纳姆;
cell=row.createCell(colNum);
if(null!=detail.getNGid()){
cell.setCellValue(detail.getNGid());
}否则{
cell.setCellValue(“-”);
}
cell.setCellStyle(cellStyle);
++科尔纳姆;
cell=row.createCell(colNum);
if(null!=detail.getName()){
cell.setCellValue(detail.getName());
}否则{
cell.setCellValue(“-”);
}
cell.setCellStyle(cellStyle);
}
对于(int i=0;ifor (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
for(int i=0;i
将循环从1开始,改为headers.length。您可以使用
XSSFWorkbook
的setColumnWidth
方法设置列宽。第一个参数是列号(从零开始),第二个参数是宽度。我们需要在这里设置一些小技巧来设置宽度。要将宽度设置为25
,我们需要将参数传递为25*256
XSSFSheet sheet = workbook.createSheet("MySheet");
sheet.setColumnWidth(3, 25 * 256);
所以您不想将列0的宽度格式化为自动调整大小?因此,从
sheet.autoSizeColumn(i)中简单排除i==0
代码>。它可以工作。谢谢您。如何为所有列设置它?要为所有列设置列,您必须首先将列数输入一个变量,然后在循环工作表中循环代码。setColumnWidth(3,25*256)
其中3
将是循环中的计数器要一次性设置列宽,我们可以使用sheet.setDefaultColumnWidth()代码>