poi导出excel表格,在导出的时候能不能设置内容换行
在开发中经常需要用到对Excel文件的操作,POI生成excel实现自动调整行高的代码如下:import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFComment; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; public class PoiCreateExcelTest { public static void main(String[] args) {/** * @see For more*/ // 创建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook();// 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称 HSSFSheet sheet = workbook.createSheet();//HSSFSheet sheet = workbook.createSheet("SheetName"); // 用于格式化单元格的数据 HSSFDataFormat format = workbook.createDataFormat();// 创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算.HSSFRow row = sheet.createRow((short) 1);// 设置字体 HSSFFont font = workbook.createFont(); font.setFontHeightInPoints((short) 20); //字体高度 font.setColor(HSSFFont.COLOR_RED); //字体颜色 font.setFontName("黑体"); //字体 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度 font.setItalic(true); //是否使用斜体// font.setStrikeout(true); //是否使用划线// 设置单元格类型 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFont(font); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平布局:居中 cellStyle.setWrapText(true);// 添加单元格注释// 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器.HSSFPatriarch patr = sheet.createDrawingPatriarch();// 定义注释的大小和位置,详见文档 HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 6, 5));// 设置注释内容 comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));// 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容.comment.setAuthor("Xuys."); // 创建单元格 HSSFCell cell = row.createCell((short) 1); HSSFRichTextString hssfString = new HSSFRichTextString("Hello World!"); cell.setCellValue(hssfString);//设置单元格内容 cell.setCellStyle(cellStyle);//设置单元格样式 cell.setCellType(HSSFCell.CELL_TYPE_STRING);//指定单元格格式:数值、公式或字符串 cell.setCellComment(comment);//添加注释//格式化数据 row = sheet.createRow((short) 2); cell = row.createCell((short) 2); cell.setCellValue(11111.25); cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(format.getFormat("0.0")); cell.setCellStyle(cellStyle); row = sheet.createRow((short) 3); cell = row.createCell((short) 3); cell.setCellValue(9736279.073); cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(format.getFormat("#,##0.0000")); cell.setCellStyle(cellStyle); sheet.autoSizeColumn((short)0); //调整第一列宽度 sheet.autoSizeColumn((short)1); //调整第二列宽度 sheet.autoSizeColumn((short)2); //调整第三列宽度 sheet.autoSizeColumn((short)3); //调整第四列宽度 try { FileOutputStream fileOut = new FileOutputStream("C:/3.xls"); workbook.write(fileOut); fileOut.close(); } catch (Exception e) { System.out.println(e.toString()); } } }。
poi生成表格不能自动换行
POI生成excel表格,如何合并单元格Java代码import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.Region;public class ExcelTest {/*** @param args*/public static void main(String[] args) throws IOException {try {HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFCellStyle style = wb.createCellStyle(); // 样式对象style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平HSSFRow row = sheet.createRow((short) 0);HSSFRow row2 = sheet.createRow((short) 1);sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0));HSSFCell ce = row.createCell((short) 0);ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据ce.setCellStyle(style); // 样式,居中int num = 0;for (int i = 0; i < 9;="" i++)="" {="" 循环9次,每一次都要跨单元格显示//="" 计算从那个单元格跨到那一格int="" celln="0;int" celle="0;if" (i="=" 0)="" {celln="0;celle" =="" 1;}="" else="" {celln="(i" *="" 2);celle="(i" *="" 2="" +="" 1);}//="" 单元格合并//="" 四个参数分别是:起始行,起始列,结束行,结束列sheet.addmergedregion(new="" region(0,="" (short)="" (celln="" +="" 1),="" 0,(short)="" (celle="" +="" 1)));hssfcell="" cell="row.createCell((short)" (celln="" +="" 1));cell.setcellvalue("merging"="" +="" i);="" 跨单元格显示的数据cell.setcellstyle(style);="" 样式//="" 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额”hssfcell="" cell1="row2.createCell((short)" celle);hssfcell="" cell2="row2.createCell((short)" (celle="" +="" 1));cell1.setencoding(hssfcell.encoding_utf_16);cell1.setcellvalue("数量");cell1.setcellstyle(style);cell2.setencoding(hssfcell.encoding_utf_16);cell2.setcellvalue("金额");cell2.setcellstyle(style);num++;}//="" 在后面加上合计百分比//="" 合计="" 在最后加上,还要跨一个单元格sheet.addmergedregion(new="" region(0,="" (short)="" (2="" *="" num="" +="" 1),="" 0,(short)="" (2="" *="" num="" +="" 2)));hssfcell="" cell="row.createCell((short)" (2="" *="" num="" +="" 1));cell.setencoding(hssfcell.encoding_utf_16);cell.setcellvalue("合计");cell.setcellstyle(style);hssfcell="" cell1="row2.createCell((short)" (2="" *="" num="" +="" 1));hssfcell="" cell2="row2.createCell((short)" (2="" *="" num="" +="" 2));cell1.setencoding(hssfcell.encoding_utf_16);cell1.setcellvalue("数量");cell1.setcellstyle(style);cell2.setencoding(hssfcell.encoding_utf_16);cell2.setcellvalue("金额");cell2.setcellstyle(style);//="" 百分比="" 同上sheet.addmergedregion(new="" region(0,="" (short)="" (2="" *="" num="" +="" 3),="" 0,(short)="" (2="" *="" num="" +="" 4)));hssfcell="" cellb="row.createCell((short)" (2="" *="" num="" +="" 3));cellb.setencoding(hssfcell.encoding_utf_16);cellb.setcellvalue("百分比");cellb.setcellstyle(style);hssfcell="" cellb1="row2.createCell((short)" (2="" *="" num="" +="" 3));hssfcell="" cellb2="row2.createCell((short)" (2="" *="" num="" +="" 4));cellb1.setencoding(hssfcell.encoding_utf_16);cellb1.setcellvalue("数量");cellb1.setcellstyle(style);cellb2.setencoding(hssfcell.encoding_utf_16);cellb2.setcellvalue("金额");cellb2.setcellstyle(style);fileoutputstream="" fileout="new" fileoutputstream("workbook.xls");wb.write(fileout);fileout.close();system.out.print("ok");}="" catch="" (exception="" ex)="">
使用poi 如何在生成word 添加横线
在一篇Word文档中,一般情况下我们将所有页面均设置为横向或纵向。
但有时也需要将其中的某些页面设置为其它页面方向不同,或者根本就是没有规律,横向与纵向的页面掺杂在一起。那么如何才能让一个Word文档中同时存在横向和纵向两种方向的页面呢?能不能随心所欲地调整页面方向呢? 细心的读者可能会发现,当选择菜单命令“文件”|“页面设置”,打开“页面设置”对话框后,在其左下方有一个“应用于”下拉列表。
使用这个下拉列表,我们可以任意设置页面的方向。分不同情况介绍如下。
(1)如果一篇文章的前边设置一个方向,如纵向,而后边都设置为横向,则可以先将插入点定位到纵向页面的结尾,或要设置为横向页面的页首,在“页面设置”对话框中单击“横向”,然后在“应用于”下拉列表中选择“插入点之后”。 (2)如果要将某些选定的页面设置为某一个方向,可以先选中这些页面中所有的内容,然后在“应用于”下拉列表中选择“所选文字”。
(3)如果文档中以标题样式分为许多小节,可以选中要改变页面方向的节,然后在“应用于”下拉列表中选择“所选节”。如果不选某节,而只是将插入点定位到该节中,则还可以选择“本节”。
设置完成后,可以在预览视图中适当缩小显示比例,查看更改的结果,如图中所示。 推而广之,其实不仅可以将页面方向任意地应用到不同的页面,“页面设置”对话框中的其它设置选项,如纸张类型、版式、页边距等,都可以类似地对不同页面采用不同的设置,读者朋友不妨试一下。
poi 导出excel 怎么设置合并的单元格自动换行
POI生成excel表格,如何合并单元格 Java代码import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.Region; public class ExcelTest { /** * @param args */ public static void main(String[] args) throws IOException { try { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFCellStyle style = wb.createCellStyle(); // 样式对象 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平 HSSFRow row = sheet.createRow((short) 0); HSSFRow row2 = sheet.createRow((short) 1); sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0)); HSSFCell ce = row.createCell((short) 0); ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理 ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据 ce.setCellStyle(style); // 样式,居中 int num = 0; for (int i = 0; i < 9;="" i++)="" {="" 循环9次,每一次都要跨单元格显示="" 计算从那个单元格跨到那一格="" int="" celln="0;" int="" celle="0;" if="" (i="=" 0)="" {="" celln="0;" celle="1;" }="" else="" {="" celln="(i" *="" 2);="" celle="(i" *="" 2="" +="" 1);="" }="" 单元格合并="" 四个参数分别是:起始行,起始列,结束行,结束列="" sheet.addmergedregion(new="" region(0,="" (short)="" (celln="" +="" 1),="" 0,="" (short)="" (celle="" +="" 1)));="" hssfcell="" cell="row.createCell((short)" (celln="" +="" 1));="" cell.setcellvalue("merging"="" +="" i);="" 跨单元格显示的数据="" cell.setcellstyle(style);="" 样式="" 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额”="" hssfcell="" cell1="row2.createCell((short)" celle);="" hssfcell="" cell2="row2.createCell((short)" (celle="" +="" 1));="" cell1.setencoding(hssfcell.encoding_utf_16);="" cell1.setcellvalue("数量");="" cell1.setcellstyle(style);="" cell2.setencoding(hssfcell.encoding_utf_16);="" cell2.setcellvalue("金额");="" cell2.setcellstyle(style);="" num++;="" }="" 在后面加上合计百分比="" 合计="" 在最后加上,还要跨一个单元格="" sheet.addmergedregion(new="" region(0,="" (short)="" (2="" *="" num="" +="" 1),="" 0,="" (short)="" (2="" *="" num="" +="" 2)));="" hssfcell="" cell="row.createCell((short)" (2="" *="" num="" +="" 1));="" cell.setencoding(hssfcell.encoding_utf_16);="" cell.setcellvalue("合计");="" cell.setcellstyle(style);="" hssfcell="" cell1="row2.createCell((short)" (2="" *="" num="" +="" 1));="" hssfcell="" cell2="row2.createCell((short)" (2="" *="" num="" +="" 2));="" cell1.setencoding(hssfcell.encoding_utf_16);="" cell1.setcellvalue("数量");="" cell1.setcellstyle(style);="" cell2.setencoding(hssfcell.encoding_utf_16);="" cell2.setcellvalue("金额");="" cell2.setcellstyle(style);="" 百分比="" 同上="" sheet.addmergedregion(new="" region(0,="" (short)="" (2="" *="" num="" +="" 3),="" 0,="" (short)="" (2="" *="" num="" +="" 4)));="" hssfcell="" cellb="row.createCell((short)" (2="" *="" num="" +="" 3));="" cellb.setencoding(hssfcell.encoding_utf_16);="" cellb.setcellvalue("百分比");="" cellb.setcellstyle(style);="" hssfcell="" cellb1="row2.createCell((short)" (2="" *="" num="" +="" 3));="" hssfcell="" cellb2="row2.createCell((short)" (2="" *="" num="" +="" 4));="" cellb1.setencoding(hssfcell.encoding_utf_16);="" cellb1.setcellvalue("数量");="" cellb1.setcellstyle(style);="" cellb2.setencoding(hssfcell.encoding_utf_16);="" cellb2.setcellvalue("金额");="" cellb2.setcellstyle(style);="" fileoutputstream="" fileout="new" fileoutputstream("workbook.xls");="" wb.write(fileout);="" fileout.close();="" system.out.print("ok");="" }="" catch="" (exception="" ex)="" {="" ex.printstacktrace();="" }="" }="">
java poi 操作word文档,怎么写入带上下标的文字
1.1 添加poi支持:包下载地址http://www.apache.org/dyn/closer.cgi/poi/release/ 1.2 POI对Excel文件的读取操作比较方便,POI还提供对Word的DOC格式文件的读取。
但在它的发行版本中没有发布对Word支持的模块,需要另外下载一个POI的扩展的Jar包。下载地址为http://www.ibiblio.org/maven2/org/textmining/tm-extractors/0.4/ 下载extractors-0.4_zip这个文件package com.ray.poi.util;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.poifs.filesystem.DirectoryEntry;import org.apache.poi.poifs.filesystem.DocumentEntry;import org.apache.poi.poifs.filesystem.POIFSFileSystem;import org.textmining.text.extraction.WordExtractor;/** * 读写doc * @author wangzonghao * */public class POIWordUtil { /** * 读入doc * @param doc * @return * @throws Exception */ public static String readDoc(String doc) throws Exception { // 创建输入流读取DOC文件 FileInputStream in = new FileInputStream(new File(doc)); WordExtractor extractor = null; String text = null; // 创建WordExtractor extractor = new WordExtractor(); // 对DOC文件进行提取 text = extractor.extractText(in); return text; } /** * 写出doc * @param path * @param content * @return */ public static boolean writeDoc(String path, String content) { boolean w = false; try { // byte b[] = content.getBytes("ISO-8859-1"); byte b[] = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(b); POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry directory = fs.getRoot(); DocumentEntry de = directory.createDocument("WordDocument", bais); FileOutputStream ostream = new FileOutputStream(path); fs.writeFilesystem(ostream); bais.close(); ostream.close(); } catch (IOException e) { e.printStackTrace(); } return w; } }测试package com.ray.poi.util;import junit.framework.TestCase;public class POIUtilTest extends TestCase { public void testReadDoc() { try{ String text = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc"); System.out.println(text); }catch(Exception e){ e.printStackTrace(); } } public void testWriteDoc() { String wr; try { wr = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc"); boolean b = POIWordUtil.writeDoc("c:\\demo.doc",wr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}。
转载请注明出处51数据库 » poi生成word内容换行符