POIを使用してExcelファイルを生成すると、excel列幅の問題と解決を自動的に調整できます.

1823 ワード

自分が直面したいくつかの問題について話します.
public class ff {
	
	public static void main(String[] args) throws IOException {
		HSSFWorkbook wwk = new HSSFWorkbook();
		HSSFSheet sheet = wwk.createSheet("sheet1");
		
		String strData = "";
		UserPO userPO = new UserPO();
		Field[] fields = userPO.getClass().getDeclaredFields();
		for (int i = 0; i < fields.length; i++) {
			strData = strData.concat(fields[i].getName()).concat("\t");
		}
		strData = strData.concat("\r
"); List list = DaoServiceProvider.getResInstanceDao().GetXLS("UserPO"); if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) strData = strData.concat(list.get(i).getName()) .concat("\t").concat(list.get(i).getPassword()).concat( "\r
"); } HSSFRow row=sheet.createRow(( short )0); HSSFCell cell=row.createCell((short) 0); HSSFRichTextString hssfString = new HSSFRichTextString("11111111111111"); //HSSFRichTextString hssfString = new HSSFRichTextString(strData); //cell.setCellValue(strData); cell.setCellValue(hssfString); sheet.autoSizeColumn((short) 0); FileOutputStream stream = new FileOutputStream("E:/123.xls"); wwk.write(stream); stream.close(); } }

上記は、列幅を自動的に調整する最も基本的な文です.
問題1:autoSizeColumn()という方法は2.5 poiにはありません.その後3.0 poiで存在して使用されました.
問題2:setCellValue(strData);この方法の使用は、もしあなたの中のパラメータがstringだけであればautoSizeColumn()という方法は失効する可能性があります.後にHSSFRichTextStringというパラメータを使用してHSSFRichTextString hssfString=new HSSFRichTextString("11111111111111111");実は彼はstringを変えただけです.
質問3:stringパラメータの使用について、私が書いたstrData文字列だけではautoSizeColumn()メソッドを無効にすることはできないようです.エスケープ文字「t」、「r」を使ったのかもしれません.
これらの問題に直面した同級生に少し助けてほしい...