Java 设置Word表格自适应的3种情况
如何让WORD中的文字自动适应表格
然后在该单元格内输入文字时,Word会自动调整字符间距以适应单元格大小,但字符字号不变。
如何让WORD中的文字自动适应表格
在WORD中做过表格的朋友都应该知道,在输入文字时,表格会自己改变列宽去适应文字,但是一般人不会想到如何?让文字自动适应表格。有一个朋友就遇上了需要文字自动适应表格的问题,他单位每完成一个项目,就要把所有材料组成案卷,每卷前都要有目录页,这个目录页是一个表格形式,一般是在EXCEL中完成,可是有一次,朋友的EXCEL出了问题,死活不启动,没办法只好在WORD中做表格,但是由于工作的顺序是先输入文字再设定字体大小,所以,当向WORD表格中输入文字时,WORD表格就会自动增加列宽以适应文字,但是朋友是不想让单元格的尺寸发生变化的,他求助如果WORD表格也能像EXCEL那样文字自动适应就好了。
选中单元格。从“表格”菜单中选择“表格属性”命令,随后出现“表格属性”对话框:
在“表格”选项卡中,单击“选项”按钮,随后弹出“表格选项”对话框,清除“自动重调尺寸以适应内容”复选框以固定表格尺寸。
在“单元格”选项适应文字”复选框。为了让单元格容下尽量多的文字你还可以把单元格边距全都设为0。设置完成后,单击“确定”按钮退出“表格属性”对话框。
表格列宽自适应规则
表格列宽自适应规则全文共四篇示例,供读者参考第一篇示例:表格是我们日常工作或学习中常用的一种展示数据的形式,但是对于表格列宽的设置往往是一个让人头疼的问题。
有时候我们的表格内容可能过长,导致文字溢出列宽,这不仅让表格看起来不美观,还会影响数据的展示效果。
制作一个表格时必须要考虑到表格列宽的自适应规则,让表格内容能够完整显示,同时保持整体美观。
一、为什么表格列宽会出现溢出的问题?在制作表格的过程中,我们往往会设置表格的列宽,但是有时候我们的表格内容可能会超出列宽限制,导致文字溢出。
这主要是因为表格的内容不是单一类型的,例如有文字、数字、图片等不同类型的数据,它们的长度和宽度都不相同。
如果我们在设计表格时没有考虑到这些因素,很容易出现数据溢出列宽的情况。
二、表格列宽自适应规则为了解决表格列宽溢出的问题,我们可以根据以下几个规则来设置表格列宽,保证表格内容能够完整显示,同时保持整体美观:1. 文字内容自动换行:对于文字类型的数据,可以设置为自动换行,让文字按照列宽自动调整折行。
这样既可以完整显示文字内容,又不会导致文字溢出列宽。
2. 数字和图片宽度固定:对于数字和图片类型的数据,可以固定宽度,保证数据能够完整显示,并且不会影响其他列的宽度。
3. 等比例调整列宽:当表格中有多列数据时,可以根据每列数据的长度和宽度进行等比例调整,保证整体美观和数据完整显示。
4. 考虑列宽限制:在设置表格列宽时,一定要考虑到列宽的限制,不要设置过窄的列宽,导致数据溢出。
四、总结表格列宽自适应规则是制作表格时必须要考虑的一个重要问题,能够帮助我们更好地展示数据,保持表格的整体美观。
通过合理设置表格列宽,我们可以避免数据溢出列宽的情况,同时保证数据能够完整显示。
在实际制作表格时,我们可以根据表格内容的不同选择合适的列宽,随时调整列宽,注意数据长度和宽度,以及多样化的数据展示方式,来保证表格的内容能够清晰、完整地呈现出来。
希望以上内容能够帮助大家更好地应用表格列宽自适应规则,制作出更加美观和实用的表格。
JavaPOI操作word文档内容、表格
JavaPOI操作word⽂档内容、表格⼀、pom<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.0.0</version></dependency>⼆、直接上代码word模板中${content} 注意我只有在.docx⽤XWPFDocument才有效2.1/*** 获取document**/XWPFDocument document = null;try {document = new XWPFDocument(inputStream);} catch (IOException ioException) {ioException.printStackTrace();}/*** 替换段落⾥⾯的变量** @param doc 要替换的⽂档* @param params 参数*/private void replaceInPara(XWPFDocument doc, Map<String, String> params) {for (XWPFParagraph para : doc.getParagraphs()) {replaceInPara(para, params);}}/*** 替换段落⾥⾯的变量** @param para 要替换的段落* @param params 参数*/private void replaceInPara(XWPFParagraph para, Map<String, String> params) {List<XWPFRun> runs;Matcher matcher;replaceText(para);//如果para拆分的不对,则⽤这个⽅法修改成正确的if (matcher(para.getParagraphText()).find()) {runs = para.getRuns();for (int i = 0; i < runs.size(); i++) {XWPFRun run = runs.get(i);String runText = run.toString();matcher = matcher(runText);if (matcher.find()) {while ((matcher = matcher(runText)).find()) {runText = matcher.replaceFirst(String.valueOf(params.get(matcher.group(1))));}//直接调⽤XWPFRun的setText()⽅法设置⽂本时,在底层会重新创建⼀个XWPFRun,把⽂本附加在当前⽂本后⾯, para.removeRun(i);para.insertNewRun(i).setText(runText);}}}}/*** 替换⽂本内容* @param para* @return*/private List<XWPFRun> replaceText(XWPFParagraph para) {List<XWPFRun> runs = para.getRuns();String str = "";boolean flag = false;for (int i = 0; i < runs.size(); i++) {XWPFRun run = runs.get(i);String runText = run.toString();if (flag || runText.equals("${")) {str = str + runText;flag = true;para.removeRun(i);if (runText.equals("}")) {flag = false;para.insertNewRun(i).setText(str);str = "";}i--;}}return runs;}2.22.2.1XWPFTable table = document.getTableArray(0);//获取当前表格XWPFTableRow twoRow = table.getRow(2);//获取某⼀⾏XWPFTableRow nextRow = table.insertNewTableRow(3);//插⼊⼀⾏XWPFTableCell firstRowCellOne = firstRow.getCell(0);firstRowCellOne.removeParagraph(0);//删除默认段落,要不然表格内第⼀条为空⾏XWPFParagraph pIO2 =firstRowCellOne.addParagraph();XWPFRun rIO2 = pIO2.createRun();rIO2.setFontFamily("宋体");//字体rIO2.setFontSize(8);//字体⼤⼩rIO2.setBold(true);//是否加粗rIO2.setColor("FF0000");//字体颜⾊rIO2.setText("这是写⼊的内容");//rIO2.addBreak(BreakType.TEXT_WRAPPING);//软换⾏,亲测有效/*** 复制单元格和样式** @param targetRow 要复制的⾏* @param sourceRow 被复制的⾏*/public void createCellsAndCopyStyles(XWPFTableRow targetRow, XWPFTableRow sourceRow) {targetRow.getCtRow().setTrPr(sourceRow.getCtRow().getTrPr());List<XWPFTableCell> tableCells = sourceRow.getTableCells();if (CollectionUtils.isEmpty(tableCells)) {return;}for (XWPFTableCell sourceCell : tableCells) {XWPFTableCell newCell = targetRow.addNewTableCell();newCell.getCTTc().setTcPr(sourceCell.getCTTc().getTcPr());List sourceParagraphs = sourceCell.getParagraphs();if (CollectionUtils.isEmpty(sourceParagraphs)) {continue;}XWPFParagraph sourceParagraph = (XWPFParagraph) sourceParagraphs.get(0);List targetParagraphs = newCell.getParagraphs();if (CollectionUtils.isEmpty(targetParagraphs)) {XWPFParagraph p = newCell.addParagraph();p.getCTP().setPPr(sourceParagraph.getCTP().getPPr());XWPFRun run = p.getRuns().isEmpty() ? p.createRun() : p.getRuns().get(0);run.setFontFamily(sourceParagraph.getRuns().get(0).getFontFamily());} else {XWPFParagraph p = (XWPFParagraph) targetParagraphs.get(0);p.getCTP().setPPr(sourceParagraph.getCTP().getPPr());XWPFRun run = p.getRuns().isEmpty() ? p.createRun() : p.getRuns().get(0);if (sourceParagraph.getRuns().size() > 0) {run.setFontFamily(sourceParagraph.getRuns().get(0).getFontFamily());}}}}#### 2.2.3/*** 合并单元格** @param table 表格对象* @param beginRowIndex 开始⾏索引* @param endRowIndex 结束⾏索引* @param colIndex 合并列索引*/public void mergeCell(XWPFTable table, int beginRowIndex, int endRowIndex, int colIndex) { if (beginRowIndex == endRowIndex || beginRowIndex > endRowIndex) {return;}//合并⾏单元格的第⼀个单元格CTVMerge startMerge = CTVMerge.Factory.newInstance();startMerge.setVal(STMerge.RESTART);//合并⾏单元格的第⼀个单元格之后的单元格CTVMerge endMerge = CTVMerge.Factory.newInstance();endMerge.setVal(STMerge.CONTINUE);table.getRow(beginRowIndex).getCell(colIndex).getCTTc().getTcPr().setVMerge(startMerge); for (int i = beginRowIndex + 1; i <= endRowIndex; i++) {table.getRow(i).getCell(colIndex).getCTTc().getTcPr().setVMerge(endMerge);}}/*** insertRow 在word表格中指定位置插⼊⼀⾏,并将某⼀⾏的样式复制到新增⾏* @param copyrowIndex 需要复制的⾏位置* @param newrowIndex 需要新增⼀⾏的位置* */public static void insertRow(XWPFTable table, int copyrowIndex, int newrowIndex) {// 在表格中指定的位置新增⼀⾏XWPFTableRow targetRow = table.insertNewTableRow(newrowIndex);// 获取需要复制⾏对象XWPFTableRow copyRow = table.getRow(copyrowIndex);//复制⾏对象targetRow.getCtRow().setTrPr(copyRow.getCtRow().getTrPr());//或许需要复制的⾏的列List<XWPFTableCell> copyCells = copyRow.getTableCells();//复制列对象XWPFTableCell targetCell = null;for (int i = 0; i < copyCells.size(); i++) {XWPFTableCell copyCell = copyCells.get(i);targetCell = targetRow.addNewTableCell();targetCell.getCTTc().setTcPr(copyCell.getCTTc().getTcPr());if (copyCell.getParagraphs() != null && copyCell.getParagraphs().size() > 0) {targetCell.getParagraphs().get(0).getCTP().setPPr(copyCell.getParagraphs().get(0).getCTP().getPPr()); if (copyCell.getParagraphs().get(0).getRuns() != null&& copyCell.getParagraphs().get(0).getRuns().size() > 0) {XWPFRun cellR = targetCell.getParagraphs().get(0).createRun();cellR.setBold(copyCell.getParagraphs().get(0).getRuns().get(0).isBold());}}}}/*** 正则匹配字符串** @param str* @return*/private Matcher matcher(String str) {Pattern pattern = pile("\\$\\{(.+?)\\}", Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);return matcher;}。
Java 设置Excel自适应行高或列宽
Java 设置Excel自适应行高、列宽在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法。
设置自适应时,可考虑2种情况:1.固定数据,设置行高、列宽自适应数据(常见的设置自适应方法)2.固定列宽,缩小数据字体大小适应列宽本文将通过java程序来介绍具体的自适应设置方法。
工具:Free Spire.XLS for Java (免费版)注:可通过官网下载包,并解压将lib文件夹下的jar文件导入java程序;或者通过maven仓库下载并导入。
参考如下导入效果:Java 代码示例1. 固定数据,设置行高、列宽自适应数据(此自适应方法可对指定单元格数据或者整个工作表来设置)import com.spire.xls.*;public class AutoFit {public static void main(String[] args) {//创建一个Workbook类的对象,并加载测试文档Workbook wb = new Workbook();wb.loadFromFile("sample.xlsx");//获取工作表Worksheet sheet = wb.getWorksheets().get(0);//设置行高、列宽为自适应(应用于指定数据范围)sheet.getAllocatedRange().get("A1:E14").autoFitRows();sheet.getAllocatedRange().get("A1:E14").autoFitColumns();/*//设置行高、列宽为自适应(应用于整个工作表)sheet.getAllocatedRange().autoFitRows();sheet.getAllocatedRange().autoFitColumns();*///保存文档wb.saveToFile("result.xlsx", FileFormat.Version2010);wb.dispose();}}自适应设置效果:2. 缩小数据字体大小适应列宽import com.spire.xls.*;public class ShrinkToFit {public static void main(String[] args) {Workbook wb = new Workbook();wb.loadFromFile("test.xlsx");//获取第一张工作表Worksheet sheet = wb.getWorksheets().get(0);//指定需要自动缩小字体的单元格范围CellRange cell = (CellRange) sheet.get("A1");//设置ShrinkToFit为true,缩小数据以适应单元格cell.getStyle().setShrinkToFit(true);//保存文档wb.saveToFile("ShrinkTextToFitCell.xlsx", ExcelVersion.Version2013); wb.dispose();}}文本缩小效果:(本文完)。
Word中如何调整的列宽自动适应内容
Word中如何调整的列宽自动适应内容
在Word中,调整列宽自动适应内容是一项常用的操作。
它可以帮助我们更好地排版文字和表格,使得内容呈现更加整洁美观。
本文将
介绍如何在Word中进行列宽的自动适应操作。
1. 打开Word文档并创建表格
首先,打开Word文档。
在文档中选择插入表格的位置,点击“插入”选项卡上的“表格”,选择需要的表格大小。
2. 选中需要调整列宽的表格
在创建好的表格中,将鼠标移至表格左上角的方块处。
点击鼠标右键,选择“选择”选项,再选择“表格”。
3. 调整列宽
在选中表格后,可以看到表格上方会出现“布局”、“设计”和“表格工具”三个选项卡。
点击“布局”选项卡,在“自动调整”区域选择“窗口调整”。
4. 查看调整结果
在选中“窗口调整”后,你会发现表格的列宽已根据内容自动调整。
这样,单元格内的内容就能够完整地显示出来。
另外,若想手动调整列宽,可将鼠标放在表头的边界处,双击鼠标左键即可自动调整列宽。
同时,你也可以在“布局”选项卡中的“表格尺
寸”组中手动输入数值,自定义列宽大小,但需要注意的是,手动调整可能会导致内容显示不完整。
总结起来,通过上述步骤,你可以在Word中很轻松地调整列宽自动适应内容。
这将使你的文档更加清晰易读,方便阅读和浏览。
还请多多尝试,相信你会更好地掌握这一技巧。
[转载]Java给word中的table赋值
[转载]Java给word中的table赋值⼀、准备⼯作:⼆、实现⽅法: 要调⽤PageOffice操作Word中的table,必须借助数据区域(DataRegion)实现的(原因是word中的表格只有index,没有name),要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。
⽽table的插⼊,既可以在Word模版中书签处⼿动插⼊:⼯具栏“插⼊”→“表格”,亦可以在程序中通过数据区域动态添加。
1. 编辑word模板。
例如:word⽂档中有这样⼀个⼈员信息表,想要在这个⼈员信息表中填充数据,则必须先将整个成绩表的table插⼊到⼀个“书签”中:PO_regTable。
插⼊书签的时候⼀定要选择整个table。
2. 编写代码填充tablePageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz");//操作tableWordDocument doc = new WordDocument();DataRegion dataRegion = doc.openDataRegion("PO_regTable");//打开table,openTable(index)⽅法中的index代表当前书签中table位置的索引,从1开始Table table = dataRegion.openTable(1);//给table中的单元格赋值, openCellRC(int,int)中的参数分别代表第⼏⾏、第⼏列,从1开始table.openCellRC(3, 1).setValue("A公司");table.openCellRC(3, 2).setValue("开发部");table.openCellRC(3, 3).setValue("李清");//插⼊⼀⾏,insertRowAfter⽅法中的参数代表在哪个单元格下⾯插⼊⼀个空⾏table.insertRowAfter(table.openCellRC(3, 3));table.openCellRC(4, 1).setValue("B公司");table.openCellRC(4, 2).setValue("销售部");table.openCellRC(4, 3).setValue("张三");poCtrl1.setWriter(doc);//打开⽂件poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "⽤户名"); 3. ⽣成⽂件的效果三、⽰例代码 参考Samples4中的:⼀、17、给Word⽂档中Table赋值的简单⽰例(WordSetTable)。
java导出字体适应单元格的方法
java导出字体适应单元格的方法(最新版4篇)目录(篇1)I.导出字体适应单元格的方法概述1.什么是导出字体适应单元格的方法2.该方法在Java中的应用场景3.方法的核心步骤和实现原理正文(篇1)I.导出字体适应单元格的方法概述导出字体适应单元格的方法是一种在Java中用于处理表格数据的技巧,它可以将字体大小根据单元格的大小进行调整,以实现更好的视觉效果。
这种方法在Java中应用广泛,可用于处理各种表格相关的任务,如数据展示、报表生成等。
II.该方法在Java中的应用场景导出字体适应单元格的方法在Java中的应用场景非常丰富。
例如,在Java Swing中,我们可以使用该方法来设置表格的字体大小,使其适应单元格的大小。
此外,在JavaFX中,我们也可以使用该方法来处理表格和图表等数据展示组件。
III.方法的核心步骤和实现原理导出字体适应单元格的方法主要包括以下步骤:1.获取单元格的宽度和高度,计算单元格所需的字体大小。
2.获取当前的字体大小和样式,并将其应用到单元格中。
3.根据单元格的大小调整字体大小,使其适应单元格的布局。
4.重复以上步骤,直到所有单元格的字体大小都适应了其布局。
该方法的实现原理是通过不断调整字体大小,直到所有单元格的字体大小都适应了其布局。
目录(篇2)I.导出字体适应单元格的方法概述1.介绍- 背景介绍- 目的意义- 主要方法II.导出字体适应单元格的方法详解1.字体选择- 单元格大小- 字体大小- 字体颜色2.导出方法- 图片格式- 文字格式- 自定义格式3.适应单元格方法- 单元格大小调整- 字体缩放- 文字对齐正文(篇2)导出字体适应单元格的方法是一种将字体导出为图像或文本,并使其适应单元格大小的技术。
这种技术可以帮助用户在单元格中更清晰地展示内容,提高可读性和用户体验。
下面将详细介绍导出字体适应单元格的方法。
1.字体选择在导出字体适应单元格的方法中,字体选择是至关重要的。
表格列宽自适应规则-概述说明以及解释
表格列宽自适应规则-范文模板及概述示例1:表格列宽自适应规则是用于确定表格中各列的宽度,以确保内容能够完整显示并合理分布。
以下是一些常用的表格列宽自适应规则。
1. 等宽分配:将表格的宽度平均分配给所有的列。
这种规则适用于表格中的内容比较简单,没有特别长的文本或数字的情况。
通过这种方式,所有列的宽度都相同,使得整个表格看起来更加整齐。
2. 文本长度自适应:根据每列中最长的文本内容的长度来确定列的宽度。
这种规则适用于表格中的列中包含着较长的文本,以确保所有内容都能被完整显示。
通过该规则,表格的宽度会有所不同,以适应不同长度的文本。
3. 数字长度自适应:类似于文本长度自适应规则,但是针对的是表格中包含数字的列。
根据每列中最大数字的长度来确定列的宽度。
这种规则适用于需要显示数字的表格,保证数字能够完整显示,并且对齐。
4. 固定列宽:为某些列指定固定的宽度,不进行自适应调整。
这种规则适用于特定的列需要特别突出显示或需要占用更大的宽度。
通过固定列宽,可以在表格中提供更多的信息,而不仅仅局限于自适应调整的列。
综上所述,表格列宽自适应规则根据内容的特点来确定每列的宽度,以确保内容能够完整显示,并使整个表格看起来更加美观和整洁。
不同的规则适用于不同类型的表格,根据需求选择合适的规则可以提高表格的可读性和可用性。
示例2:表格列宽自适应规则是指在设计和排版表格时,如何根据内容的长度和列数来动态调整每一列的宽度,以确保表格整体美观、易读和易用。
1. 百分比布局:使用百分比作为列宽的单位,可以根据表格宽度的变化自动调整每个列的宽度。
这种布局方式适用于响应式设计,可以在不同屏幕尺寸下保持良好的显示效果。
2. 自动调整列宽:根据单元格内容的长度自动调整列宽。
在大部分情况下,表格中的内容长度是不一致的,因此使用自动调整列宽的方式可以确保每列能够容纳足够的内容,以免溢出或显示不完整。
3. 固定列宽和自动调整结合:可以将表格的部分列设置为固定宽度,而其他列采用自动调整的方式。
poi单元格自适应列宽
poi单元格自适应列宽poi是一款用于操作Microsoft Office文件的Java库。
在使用poi进行Excel文件操作时,要实现单元格自适应列宽,可以按照以下步骤进行操作:1. 创建一个Workbook对象,并创建一个Sheet对象。
2. 在Sheet对象中创建行和单元格,并设置单元格的值。
3. 调用Sheet对象的autoSizeColumn方法,传入需要自适应列宽的单元格索引作为参数,如:sheet.autoSizeColumn(0)。
4. 重复上述步骤,直到所有需要自适应列宽的单元格都进行了设置。
5. 最后,将Workbook对象写入到Excel文件中。
下面是一个示例代码,演示如何使用poi实现单元格自适应列宽:javaimport ermodel.*;public class ExcelExample {public static void main(String[] args) {// 创建一个Workbook对象Workbook workbook = new XSSFWorkbook();// 创建一个Sheet对象Sheet sheet = workbook.createSheet("Sheet1");// 创建一行Row row = sheet.createRow(0);// 创建单元格,并设置值Cell cell = row.createCell(0);cell.setCellValue("这是一个测试");// 自适应第一列的列宽sheet.autoSizeColumn(0);// 写入Excel文件try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {workbook.write(outputStream);} catch (IOException e) {e.printStackTrace();通过调用Sheet对象的autoSizeColumn方法,可以实现单元格自适应列宽。
javaPOI往word文档中指定位置插入表格
javaPOI往word⽂档中指定位置插⼊表格1.Service demoimport java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.math.BigInteger;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.poi.POIXMLDocument;import org.apache.poi.util.IOUtils;import ermodel.XWPFDocument;import ermodel.XWPFParagraph;import ermodel.XWPFRun;import ermodel.XWPFTable;import ermodel.XWPFTableCell;import ermodel.XWPFTableRow;import org.apache.xmlbeans.XmlCursor;import org.docx4j.TraversalUtil;import org.docx4j.dml.wordprocessingDrawing.Inline;import org.docx4j.finders.RangeFinder;import org.docx4j.openpackaging.packages.WordprocessingMLPackage;import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;import org.docx4j.wml.Body;import org.docx4j.wml.CTBookmark;import org.docx4j.wml.Document;import org.docx4j.wml.Drawing;import org.docx4j.wml.ObjectFactory;import org.docx4j.wml.P;import org.docx4j.wml.R;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import bels.StandardPieSectionLabelGenerator;import org.jfree.chart.plot.PiePlot;import org.jfree.data.general.DefaultPieDataset;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;import org.springframework.stereotype.Service;import mon.collect.Lists;import mon.collect.Maps;public class ExportBgServiceImpl {private static final String bookmark = "tpBookmark";// 报告图⽚位置的书签名public void exportBg(OutputStream out) {String srcPath = "D:/tp/fx.docx";String targetPath = "D:/tp/fx2.docx";String key = "$key";// 在⽂档中需要替换插⼊表格的位置XWPFDocument doc = null;File targetFile = null;try {doc = new XWPFDocument(POIXMLDocument.openPackage(srcPath));List<XWPFParagraph> paragraphList = doc.getParagraphs();if (paragraphList != null && paragraphList.size() > 0) {for (XWPFParagraph paragraph : paragraphList) {List<XWPFRun> runs = paragraph.getRuns();for (int i = 0; i < runs.size(); i++) {String text = runs.get(i).getText(0).trim();if (text != null) {if (text.indexOf(key) >= 0) {runs.get(i).setText(text.replace(key, ""), 0);XmlCursor cursor = paragraph.getCTP().newCursor();// 在指定游标位置插⼊表格XWPFTable table = doc.insertNewTbl(cursor);CTTblPr tablePr = table.getCTTbl().getTblPr();CTTblWidth width = tablePr.addNewTblW();width.setW(BigInteger.valueOf(8500));this.inserInfo(table);break;}}}}}doc.write(out);out.flush();out.close();} catch (Exception e) {throw new SysException(MON_SYSTEM_ERROR, e);}}/*** 把信息插⼊表格* @param table* @param data*/private void inserInfo(XWPFTable table) {List<DTO> data = mapper.getInfo();//需要插⼊的数据XWPFTableRow row = table.getRow(0);XWPFTableCell cell = null;for (int col = 1; col < 6; col++) {//默认会创建⼀列,即从第2列开始// 第⼀⾏创建了多少列,后续增加的⾏⾃动增加列CTTcPr cPr =row.createCell().getCTTc().addNewTcPr();CTTblWidth width = cPr.addNewTcW();if(col==1||col==2||col==4){width.setW(BigInteger.valueOf(2000));}}row.getCell(0).setText("指标");row.getCell(1).setText("指标说明");row.getCell(2).setText("公式");row.getCell(3).setText("参考值");row.getCell(4).setText("说明");row.getCell(5).setText("计算值");for(DTO item : data){row = table.createRow();row.getCell(0).setText(item.getZbmc());cell = row.getCell(1);cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000));cell.setText(item.getZbsm());cell = row.getCell(2);cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000));cell.setText(item.getJsgs());if(item.getCkz()!=null&&!item.getCkz().contains("$")){row.getCell(3).setText(item.getCkz());}cell = row.getCell(4);cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000));cell.setText(item.getSm());row.getCell(5).setText(item.getJsjg()==null?"⽆法计算":item.getJsjg());}}}2.Controllerpublic void exportBg(HttpServletResponse response) {try {response.setContentType("application/octet-stream");String name = "报告";response.addHeader("Content-Disposition", "attachment;filename="+new String(name.getBytes(),"iso-8859-1") +".docx"); OutputStream out = response.getOutputStream();export.exportBg(out,sblsh);} catch (Exception e) {}}3.maven<dependency><groupId>org.apache.poi</groupId><artifactId>poi-excelant</artifactId><version>3.12</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.12</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.8</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.8</version></dependency><!-- ⽣成图⽚--><dependency><groupId>org.jfree</groupId><artifactId>jfreechart</artifactId><version>1.0.19</version></dependency><dependency><!--⽀持插⼊图⽚--><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version>3.3.1</version></dependency>在⽂档中指定位置设置好关键字如 demo 中的 “$key”结果图如下:。
Word文档中的文字内容自动适应表格的技巧
Word文档中的文字内容自动适应表格的技巧
在表格中输入文字的时候,表格的列宽会自动增加以适应表格里的文字,就算无法增加时也会自动换行。
但好景并不希望表格的列宽跟着发生变化,因为这样会破坏她设计好的版式。
但word却没有提供类似于excel的缩小字体填充功能,该如何设置呢?其实通过小小的设置,也能达到同样的目的。
第一步:选中表格的某些单元格,右击选持“表格属性”命令,随后会出现“表格属性”对话框,切换到“表格”选项卡,单击右下解的“选项”按钮,在随后弹出的“表格选项”对话框中清除“自动重调尺寸以适应内容”复选框,此设置的作用是可以将单元格的尺寸固定下来。
第二步:返回表格属性对话框,切换到“单元格”选项卡,单击右下角的“选项”按钮,在随后弹出的“单元格选项”对话框中勾选“适应文字”复选框,如果将边距设置为0,可以让单元格放下更多的文字。
依次确认关闭“表格属性”对话框,以后当我们在指定单元格输入文字时,word会自动调整字符间距以适应单元格的大小,而字符字号依然保持不变。
当然,也需要控制单元格中的文字数量,因为它会自动调整字符间距,如果输入的字较多,就会大大缩小间距,甚至引
起字体变形,那就得不偿佚了。
用这个方法修改了单元格的属性后,就不会有之前的烦恼了,然后再将word中的表格送货一下,就能在工作会大大加分了。
word表格行高自适应
竭诚为您提供优质文档/双击可除word表格行高自适应篇一:在word20xx文档表格中设置行高度和列宽度在word20xx文档表格中设置行高度和列宽度在word20xx文档表格中,如果用户需要精确设置行的高度和列的高度,可以在“表格工具”功能区设置精确数值,操作步骤如下所述:第1步,打开word20xx文档窗口,在表格中选中需要设置高度的行或需要设置宽度的列,如图20xx080903所示。
图20xx080903选中word表格行或列第2步,在“表格工具”功能区中切换到“布局”选项卡,在“单元格大小”分组中调整“表格行高”数值或“表格列宽”数值,以设置表格行的高度或列的宽度,如图20xx080904所示。
图20xx080904“单元格大小”分组篇二:woRd20xx表格调整行的高度、宽度和间距虽说excel制表功能强大,但是我们在制作一些简单的表格时(如:个人简历、日程表、工作安排、请假单等)一般都会首选word来制作完成。
若不是什么太复杂功能太多的表格,我们几乎都会用word来实现。
今天word联盟就来和大家一起分享下word制表的一些基础知识,在word20xx中如何调整表格的长度、宽度、高度、间距以及表格大小等,详细记录制表的每一步。
本篇教程对一些刚入门的朋友来说非常有帮助,务必要认真学习哦!一、移动调整表格的位置插入的表格后不是固定在那里的,所以我们可以任意的移动表格的位置,直到移动到适合自己的位置。
先将鼠标指针移动到表格的左上角,直到左上角出现这个图标后,再用鼠标左键按住,拖动鼠标即可移动表格的位置。
(如下图)二、word表格高度调整的方法①调(word表格行高自适应)整单个表格的高度将鼠标指针放在表格任意一行,此时指针将变成等待手工拖动的形状,按下鼠标左键,同时按下alt键,标尺上就会出现提示每行的高度;②同时调整所有表格的高度将光标移到表格的右下方,直到表格的右下方出现了个小方框时,按住鼠标左键,再按alt键(这里按alt键是进行微调),往下拖动调整即可;③将word表格调整为固定的高度将鼠标定放到表格里面,然后右键单击鼠标,在弹出的下拉菜单中选择表格属性,然后进入行中,将指定高度钩选,在后面输入想要的高度,然后确定即可。
java操作word的表格
java操作word的表格最近项目中需要把提交的页面表单的数据动态写在word模板中,简单的写了个工具类。
里面有怎眼操作word 中表格的内容,可以在word中已有的表格后面添加行并且可以增加内容。
/*** @title WordBean.java* @package com.sinosoft.bjppb_print.utils.word* @description文件描述* @author lijf* @update 2012-7-26 下午04:17:10* @version V1.0*/package com.sinosoft.bjppb_print.utils.word;import java.util.Map;import com.jacob.activeX.ActiveXComponent;import .Dispatch;import .Variant;public class WordBean {// word文档static Dispatch doc;// word运行程序对象private ActiveXComponent word;// 所有word文档集合private Dispatch documents;// 选定的范围或插入点private Dispatch selection;private boolean saveOnExit = true;public WordBean() throws Exception {if (word == null) {word = new ActiveXComponent("Word.Application");word.setProperty("Visible", new Variant(false)); // 不可见打开wordword.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏}if (documents == null)documents = word.getProperty("Documents").toDispatch();}* 重载,制定文档用户名称,主要用于痕迹保留时候显示对应的用户* @param username* @throws Exception*/public WordBean(String username) throws Exception {if (word == null) {word = new ActiveXComponent("Word.Application");word.setProperty("UserName", new Variant(username));word.setProperty("Visible", new Variant(true)); // 不可见打开word word.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏}if (documents == null)documents = word.getProperty("Documents").toDispatch();}/*** * 设置退出时参数** @param saveOnExit ** boolean true-退出时保存文件,false-退出时不保存文件**/public void setSaveOnExit(boolean saveOnExit) {this.saveOnExit = saveOnExit;}/*** * 创建一个新的word文档*/public void createNewDocument() {doc = Dispatch.call(documents, "Add").toDispatch();selection = Dispatch.get(word, "Selection").toDispatch();}/*** * 打开一个已存在的文档 * *** @param docPath*/public void openDocument(String docPath) {closeDocument();doc = Dispatch.call(documents, "Open", docPath).toDispatch();Dispatch.put(doc, "TrackRevisions", new Variant(true));Dispatch.put(doc, "PrintRevisions", new Variant(true));Dispatch.put(doc, "ShowRevisions", new Variant(false));selection = Dispatch.get(word, "Selection").toDispatch();}/**** 只读打开一个保护文档,* @param docPath-文件全名 ** @param pwd-密码**/public void openDocumentOnlyRead(String docPath, String pwd)throws Exception {closeDocument();doc = Dispatch.callN(documents, "Open", new Object[] { docPath, new Variant(false),new Variant(true), new Variant(true), pwd, "",new Variant(false) }).toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch();}public void openDocument(String docPath, String pwd) throws Exception {closeDocument();doc = Dispatch.callN(documents,"Open",new Object[] { docPath, new Variant(false), new Variant(false),new Variant(true), pwd }).toDispatch();selection = Dispatch.get(word, "Selection").toDispatch();}/*** * 把选定的内容或者插入点向右移动 * *** @param pos ** 移动的距离**/public void moveRight(int pos) {if (selection == null)selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; i < pos; i++)Dispatch.call(selection, "MoveRight");}/*** * 把插入点移动到文件首位置 ***/public void moveStart() {if (selection == null)selection = Dispatch.get(word, "Selection").toDispatch(); Dispatch.call(selection, "HomeKey", new Variant(6));}/*** * 从选定内容或插入点开始查找文本 * *** @param toFindText ** 要查找的文本 ** @return boolean true-查找到并选中该文本,false-未查找到文本**/@SuppressWarnings("static-access")public boolean find(String toFindText) {Dispatch selection = Dispatch.get(word, "Selection").toDispatch(); // 输入内容需要的对象if (toFindText == null || toFindText.equals(""))return false;// 从selection所在位置开始查询Dispatch find = word.call(selection, "Find").toDispatch();// 设置要查找的内容Dispatch.put(find, "Text", toFindText);// 向前查找Dispatch.put(find, "Forward", "True");// 设置格式Dispatch.put(find, "Format", "True");// 大小写匹配Dispatch.put(find, "MatchCase", "True");// 全字匹配Dispatch.put(find, "MatchWholeWord", "True");// 查找并选中return Dispatch.call(find, "Execute").getBoolean();}/**246. * * 把选定选定内容设定为替换文本 * *247. *248. * @param toFindText *249. * 查找字符串 *250. * @param newText *251. * 要替换的内容 *252. * @return253. *254. */public boolean replaceText(String toFindText, String newText,Dispatch selection) {if (!find(toFindText))return false;Dispatch.put(selection, "Text", newText);return true;}/**269. * * 全局替换文本 * *270. *271. * @param toFindText *272. * 查找字符串 *273. * @param newText *274. * 要替换的内容275. *276. */public void replaceAllText(String toFindText, String newText) {while (find(toFindText)) {Dispatch selection = Dispatch.get(word, "Selection").toDispatch(); // 输入内容需要的对象Dispatch.put(selection, "Text", newText);Dispatch.call(selection, "MoveRight");}}/**** @param tableIndex* @param cellRowIdx* @param cellColIdx* @return* @author lijf* @description获取表格的某个单元格内容* @update 2012-7-27 下午04:22:15*/public String getTxtFromCell(int tableIndex, int cellRowIdx, int cellColIdx) { // 所有表格Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();// 要填充的表格Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex)).toDispatch();Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx),new Variant(cellColIdx)).toDispatch();Dispatch.call(cell, "Select");String ret = "";ret = Dispatch.get(selection, "Text").toString();ret = ret.substring(0, ret.length() - 1); // 去掉最后的回车符;return ret;}/*** @author lijf* @description关闭打开的word* @update 2012-7-27 下午04:21:10*/public void closeDocument() {if (doc != null) {// Dispatch.call(doc, "ShowRevisions", new Variant(saveOnExit));Dispatch.call(doc, "Save");Dispatch.call(doc, "Close", new Variant(saveOnExit));doc = null;}}/*** 增加一行** @param tableIndex* word文档中的第N张表(从1开始)*/public void addRow( int tableIndex) {Dispatch tables = Dispatch.get(doc, "Tables" ).toDispatch();// 要填充的表格Dispatch table = Dispatch.call(tables, "Item" , new Variant(tableIndex)) .toDispatch();// 表格的所有行Dispatch rows = Dispatch.get(table, "Rows" ).toDispatch();Dispatch.call(rows, "Add" ).toDispatch();System.out.println("添加一行");}/**** @param tableIndex 第N个表格* @return* @author lijf* @description获取第N个表格的总行数* @update 2012-7-27 下午04:05:47*/public int getRowCount(int tableIndex){int count=0;Dispatch tables = Dispatch.get(doc, "Tables" ).toDispatch();// 要填充的表格Dispatch table = Dispatch.call(tables, "Item" , newVariant(tableIndex)).toDispatch();Dispatch rows = Dispatch.get(table, "Rows" ).toDispatch();count=Dispatch.get(rows, "Count").getInt();return count;}/**** @param tableIndex 第N个表格* @param cell 一行的单元格数量* @param object 填充内容的对象* @author lijf* @description向第N个表格中添加一行数据* @update 2012-7-27 下午03:25:45*/public void addRowData(int tableIndex,int cell ,Object object,String[] strs){ addRow(tableIndex);//添加一行int rowIndex=getRowCount(tableIndex);Dispatch tables = Dispatch.get(doc, "Tables" ).toDispatch();// 要填充的表格Dispatch table = Dispatch.call(tables, "Item" , newVariant(tableIndex)).toDispatch();//为当前行添加内容for(int i=1;i<=cell;i++){putTxtToCell(table,rowIndex,i,strs[i-1]);}}// 打开一个存在的word文档,并用document 引用引用它public void openFile(String wordFilePath) {Dispatch documents = Dispatch.get(word, "Documents").toDispatch();doc = Dispatch.call(documents, "Open", wordFilePath,new Variant(true)/* 是否进行转换ConfirmConversions */,new Variant(false)/* 是否只读 */).toDispatch();}/**** @param tableTitle* @param row* @param column* @author lijf* @description创建一个table* @update 2012-7-27 下午03:07:53*/public void insertTable(String tableTitle, int row, int column) {Dispatch selection = Dispatch.get(word, "Selection").toDispatch(); // 输入内容需要的对象Dispatch.call(selection, "TypeText", tableTitle); // 写入标题内容 // 标题格行Dispatch.call(selection, "TypeParagraph"); // 空一行段落Dispatch.call(selection, "TypeParagraph"); // 空一行段落Dispatch.call(selection, "MoveDown"); // 游标往下一行// 建立表格Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();// int count = Dispatch.get(tables,// "Count").changeType(Variant.VariantInt).getInt(); // document中的表格数量// Dispatch table = Dispatch.call(tables, "Item", new Variant(// 1)).toDispatch();//文档中第一个表格Dispatch range = Dispatch.get(selection, "Range").toDispatch();// /当前光标位置或者选中的区域Dispatch newTable = Dispatch.call(tables, "Add", range,new Variant(row), new Variant(column), new Variant(1)).toDispatch(); // 设置row,column,表格外框宽度Dispatch cols = Dispatch.get(newTable, "Columns").toDispatch(); // 此表的所有列,int colCount = Dispatch.get(cols,"Count").getInt();//.changeType(Variant.VariantInt).getInt();// 一共有多少列实际上这个数==column System.out.println(colCount + "列");for (int i = 1; i <= colCount; i++) { // 循环取出每一列Dispatch col = Dispatch.call(cols, "Item", new Variant(i)).toDispatch();Dispatch cells = Dispatch.get(col, "Cells").toDispatch();// 当前列中单元格int cellCount = Dispatch.get(cells, "Count").getInt();// 当前列中单元格数实际上这个数等于rowfor (int j = 1; j <= cellCount; j++) {// 每一列中的单元格数// Dispatch cell = Dispatch.call(cells, "Item", new// Variant(j)).toDispatch(); //当前单元格// Dispatch cell = Dispatch.call(newTable, "Cell", new// Variant(j) , new Variant(i) ).toDispatch(); //取单元格的另一种方法// Dispatch.call(cell, "Select");//选中当前单元格// Dispatch.put(selection, "Text",// "第"+j+"行,第"+i+"列");//往选中的区域中填值,也就是往当前单元格填值putTxtToCell(newTable, j, i, "第" + j + "行,第" + i + "列");// 与上面四句的作用相同 }}}/*** 在指定的单元格里填写数据** @param tableIndex* @param cellRowIdx* @param cellColIdx* @param txt*/public void putTxtToCell(Dispatch table, int cellRowIdx, int cellColIdx,String txt) {Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx),new Variant(cellColIdx)).toDispatch();Dispatch.call(cell, "Select");Dispatch selection = Dispatch.get(word, "Selection").toDispatch(); // 输入内容需要的对象Dispatch.put(selection, "Text", txt);}public static void main(String[] args) {try {WordBean wordutil=new WordBean();//wordutil.openDocumentOnlyRead("c:/a.docx", "123");//wordutil.openDocument("c:/a.docx");wordutil.openFile("d:/b.docx");/*Dispatch selection = Dispatch.get(wordutil.word, "Selection").toDispatch(); // 输入内容需要的对象wordutil.replaceText("453", "2",selection); wordutil.replaceText("44", "e",selection); wordutil.replaceText("ee", "1",selection);*/ //wordutil.addRow(6);String[] strs={"1","2","中华","2","3","3"}; wordutil.addRowData(6, 6, null, strs);//wordutil.replaceAllText("1234", " 你好");//wordutil.createTable();//wordutil.putTxtToCell(6,2,1,"sss");//wordutil.copyRow(6, 2);wordutil.closeDocument();} catch (Exception e) {e.printStackTrace();}}。
Java 创建Word嵌套表格
Java 在Word中创建嵌套表格嵌套表格,即在一个大的表格单元格中再嵌进去一个或几个小的表格,使表格内容布局合理。
本文将通过java程序来演示如何在Word中创建嵌套表格。
使用工具:Free Spire.Doc for Java (免费版)Jar文件获取及导入:方法1:通过官网下载文件包。
下载后,解压文件,并将lib文件夹下的Spire.Doc.jar 文件导入java程序。
方法2:通过maven仓库安装导入,可参考导入方法。
Java代码示例import com.spire.doc.*;import com.spire.doc.documents.*;import com.spire.doc.fields.TextRange;public class NestedTable {public static void main(String[]args){//加载测试文档Document doc = new Document("sample.docx");//获取指定表格中的单元格,并设置行高、列宽Section sec = doc.getSections().get(0);Table table = sec.getTables().get(0);table.getRows().get(0).setHeight(120f);table.getRows().get(0).getCells().get(0).setWidth(380);//添加嵌套表格到指定单元格Table nestedtable = table.get(0,0).addTable(true);nestedtable.getTableFormat().setHorizontalAlignment(RowAlignment.Center);//设置嵌套表格在单元格中的对齐方式nestedtable.resetCells(4,4);//指定嵌套表格行数、列数nestedtable.autoFit(AutoFitBehaviorType.Auto_Fit_To_Contents);//设置嵌套表格内容自适应方法//声明表格数组内容String[][] data ={new String[]{"编号","产区","最新型号","生产日期",},new String[]{"1","A","V2.2.0","2019-06-21"},new String[]{"2","B","V2.6.1","2019-06-18"},new String[]{"3","C","V2.6.2","2019-06-14"},};//填充数组内容到嵌套表格for (int i = 0; i < data.length; i++) {TableRow dataRow = nestedtable.getRows().get(i);dataRow.getCells().get(i).setWidth(160);dataRow.setHeight(25);dataRow.setHeightType(TableRowHeightType.Exactly);for (int j = 0; j < data[i].length; j++) {dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle); TextRange range =dataRow.getCells().get(j).addParagraph().appendText(data[i][j]);range.getCharacterFormat().setFontName("楷体");range.getCharacterFormat().setFontSize(11f);range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center); }}//保存文档doc.saveToFile("nesedtable1.docx",FileFormat.Docx_2010);}}嵌套表格添加效果:(本文完)。
Java设置Word表格边框
Java设置Word表格边框Java 设置Word表格边框概述:本文介绍通过Java程序设置Word表格边框的方法,设置边框时可对整个表格设置,也可对指定单元格设置,同时可对边框进行格式化设置设置,包括边框类型、样式、颜色、线条宽度等等,下面将分三个示例来展示如何设置边框效果:1. 表格边框1.1 对整个表格设置统一的边框样式1.2 对表格指定边框设置样式2. 单元格边框(指定单元格设置边框)程序环境准备:本文使用的是IDEA,并且需要使用到Word库(Free Spire.Doc for Java免费版),可手动下载并将lib文件夹夹下的Spire.Doc.jar导入java程序;如果想通过Maven仓库下载导入,可参考这里的jar导入方法。
Java 代码示例:【示例1】对整个表格设置统一的边框样式import com.spire.doc.*;import com.spire.doc.documents.BorderStyle;public class TableBorder2 {public static void main(String[] args) {//加载Word文档Document doc = new Document();doc.loadFromFile("sample.docx");//获取SectionSection section = doc.getSections().get(0);//获取第一个表格Table table = section.getTables().get(0);//设置表格边框样式table.getTableFormat().getBorders().setBorderType(BorderSt yle.Thin_Thick_Thin_Large_Gap);//保存文档doc.saveToFile("TableBorder2.docx",FileFormat.Docx_2013);doc.dispose();}}整体边框效果:【示例2】对表格指定边框设置样式import com.spire.doc.*;import com.spire.doc.documents.BorderStyle;import java.awt.*;public class TableBorder {public static void main(String[] args) {//加载Word文档Document doc = new Document();doc.loadFromFile("sample.docx");//获取SectionSection section = doc.getSections().get(0);//获取第一个表格Table table = section.getTables().get(0);//设置上边框table.getTableFormat().getBorders().getTop().setBorderType( BorderStyle.Dot_Dash);table.getTableFormat().getBorders().getTop().setLineWidth(2f);table.getTableFormat().getBorders().getTop().setColor(Color. red);//设置右边框table.getTableFormat().getBorders().getRight().setBorderTyp e(BorderStyle.Double);table.getTableFormat().getBorders().getRight().setLineWidth(2f);table.getTableFormat().getBorders().getRight().setColor(Col or.green);//设置下边框table.getTableFormat().getBorders().getBottom().setBorderT ype(BorderStyle.None);//设置左边框table.getTableFormat().getBorders().getLeft().setBorderType( BorderStyle.Hairline);table.getTableFormat().getBorders().getLeft().setLineWidth(2f);table.getTableFormat().getBorders().getLeft().setColor(Color. blue);//设置垂直边框table.getTableFormat().getBorders().getVertical().setBorderT ype(BorderStyle.Dot);table.getTableFormat().getBorders().getVertical().setLineWid th(2f);table.getTableFormat().getBorders().getVertical().setColor(C olor.orange);//设置水平边框table.getTableFormat().getBorders().getHorizontal().setBord erType(BorderStyle.Wave);table.getTableFormat().getBorders().getHorizontal().setLineWidt h(2f);table.getTableFormat().getBorders().getHorizontal().setColor (Color.magenta);//保存文档doc.saveToFile("TableBorder.docx",FileFormat.Docx_2013);doc.dispose();}}指定边框设置效果:【实例3】指定单元格设置边框import com.spire.doc.*;import com.spire.doc.documents.BorderStyle;import java.awt.*;public class CellBorder {public static void main(String[] args) {//加载Word文档Document doc = new Document();doc.loadFromFile("sample.docx");//获取SectionSection section = doc.getSections().get(0);//获取第一个表格Table table = section.getTables().get(0);//获取单元格,设置上、下边框TableCell cell1 = table.get(0,0);cell1.getCellFormat().getBorders().getTop().setBorderType(B orderStyle.Single);cell1.getCellFormat().getBorders().getTop().setLineWidth(2f);cell1.getCellFormat().getBorders().getTop().setColor(Color.re d);cell1.getCellFormat().getBorders().getBottom().setBorderTyp e(BorderStyle.Dash_Dot_Stroker);cell1.getCellFormat().getBorders().getBottom().setLineWidth(2);cell1.getCellFormat().getBorders().getBottom().setColor(Col or.pink);//获取单元格,设置左、右边框TableCell cell2 = table.get(1,1);cell2.getCellFormat().getBorders().getLeft().setBorderType(B orderStyle.Hairline);cell2.getCellFormat().getBorders().getLeft().setLineWidth(2);cell2.getCellFormat().getBorders().getLeft().setColor(Color.ye llow);cell2.getCellFormat().getBorders().getRight().setBorderType( BorderStyle.Double);cell2.getCellFormat().getBorders().getRight().setLineWidth(2 f);cell2.getCellFormat().getBorders().getRight().setColor(Color. magenta);//保存文档doc.saveToFile("CellBorder.docx",FileFormat.Docx_2013);doc.dispose();}}单元格边框设置效果:(完)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 设置Word中的表格自适应的3种方式
概述
在Word创建表格时,可设置表格“自动调整”,有3种情况,通过Java程序设置可调用相应的方法来实现,即:
①. 根据内容调整表格AutoFitBehaviorType.Auto_Fit_To_Contents
②. 根据窗口调整表格AutoFitBehaviorType.Auto_Fit_To_Window
③. 固定列宽AutoFitBehaviorType.Fixed_Column_Widths
程序中需要使用Word类库工具(Free Spire.Doc for Java 免费版)
导入方法:
方法1.可下载导入jar文件
方法2.创建Maven程序在pom.xml配置Maven仓库路径并指定Free Spire.Doc for Java 的Maven依赖。
完成配置后,如果使用的是IDEA,点击“Import Changes”导入;如果使用的是Eclipse,点击“保存”即可自动下载导入。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId> e-iceblue </groupId>
<artifactId>spire.doc.free</artifactId>
<version>2.7.3</version>
</dependency>
</dependencies>
Java示例
import com.spire.doc.*;
public class TableAutoFit {
public static void main(String[] args) {
//加载Word文档
Document doc = new Document();
doc.loadFromFile("test.docx");
//获取section
Section section = doc.getSections().get(0);
//获取表格
Table table = section.getTables().get(0);
//设置表格列宽适应内容
table.autoFit(AutoFitBehaviorType.Auto_Fit_To_Contents);
//设置表格列宽适应窗体
//table.autoFit(AutoFitBehaviorType.Auto_Fit_To_Window);
//设置表格固定列宽
//table.autoFit(AutoFitBehaviorType.Fixed_Column_Widths);
//保存文档
doc.saveToFile("TableAutoFit2.docx",FileFormat.Docx_2013); doc.dispose();
}
}
设置效果:
1.适应内容
2.适应窗体
3.固定列宽。