HSSF更改列宽

我正在写一个写入excel文件的项目。 我正在使用HSSF POI。 我的代码工作正常,只要写入Excel文件,但我有格式问题。 我想使每列都有一个特定的宽度。 我做了这方面的研究,并确定我正在按照所描述的内容,但是单元在运行时不会改变。 以下是我的代码:

testing类

package mainClass; import parsing.WriteExcel; public class TestClass { public static void main(String args[]){ WriteExcel wExcel = new WriteExcel(); wExcel.writeExcel(); } } 

写类

 package parsing; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; import javafx.scene.control.Cell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; public class WriteExcel { private static final String FILE_PATH = "C:\\Users\\jhamric\\Documents\\PainDifferences.xls"; public void writeExcel(){ ArrayList<String> sample1 = new ArrayList<String>(); ArrayList<String> sample2 = new ArrayList<String>(); sample1.add("1"); sample1.add("2"); sample2.add("a"); sample2.add("b"); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Unmatched Transactions"); sheet.setColumnWidth(1, 25); HSSFFont fontBold = workbook.createFont(); fontBold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); HSSFCellStyle styleBold = workbook.createCellStyle(); styleBold.setFont(fontBold); Map<String, Object[]> data = new HashMap<String, Object[]>(); data.put("0",new Object[]{"Number","Letter"}); //for(int i = 0; i < ParseFiles.InstrId.size(); i++){ for(int i = 0; i < sample1.size(); i++){ String currentIString = Integer.toString(i+1); data.put(currentIString, new Object[]{sample1.get(i),sample2.get(i)}); //data.put(currentIString, new Object[]{ParseFiles.InstrId.get(i)}); } Set<String> keyset = data.keySet(); int rownum = 0; for(String key: keyset){ Row row = sheet.createRow(rownum++); Object[] objArr = data.get(key); int cellnum = 0; for(Object obj : objArr){ org.apache.poi.ss.usermodel.Cell cell = row.createCell(cellnum++); if(cell.toString().equals("Number")){ cell.setCellStyle(styleBold); } cell.setCellValue((String)obj); } } try{ FileOutputStream out = new FileOutputStream(new File(FILE_PATH)); workbook.write(out); out.close(); workbook.close(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } } 

具体来说,我声明的代码来设置列的宽度在这里:

 sheet.setColumnWidth(1, 25); 

我的理解是,第一个数字是索引(所以它实际上是第二列),第二个数字是字符长度,所以列中的所有单元格应该是25个字符长的空白。

我将不胜感激任何帮助!

我解决了这个问题。

这个值实际上不是字符的数量,而是别的东西。 我试了5000,并正确调整了列的大小。

真正的答案是Sheet.setColumnWidth(int index, int width)设置列的宽度为256。 您声明索引是基于零的列号是正确的。 宽度以字符的1/256指定。