如何在毕业论文Word中插入图表目录

前言:近来项目结题需要撰写结题报告,在Word中需要添加图表目录(即按住Ctrl并单击可直接跳转到图表相应位置进行访问),回想起来自己本科毕设论文当中并没有添加图目录,显得稍逊一番,今进行简单教学。

1. 打开Word,如图(演示):

这里一级标题就是章,二级标题是节,三级标题是小节(演示):

2. 右键点击图片,选择“插入题注”

3. 在弹出的选项框中进行设置:

首先,在“题注”选项框中输入图表的名称,比如叫BPSK;标签选择“图”;位置选择“所在项目的下方”(如果是表,一般选择所在项目的上方);然后点击“编号”,如图:

点击编号后继续进行设置,选择格式(默认就行);在“章起始样式”中选择“标题一”(这里按照个人需求,比如我这里以标题一为例,想要的图目录是以标题一区分的大章节来分类,也就是说最后的效果是一整章的图的前缀都是该章的序号),然后点击确定,如图:

此时不出意外,就会报错,如图:

4. 遇到上述问题不要慌张,接下来咱们按照提示进行解决

大概意思就是选择的一级标题并没有链接到多级列表中,结果就是图片题注前面的序号不能按照一级标题规定的那样有序。

首先将鼠标定位在一级标题的位置,然后点击“开始”,选择“多级列表”,选择“定义新的多级列表”,如图:

 弹出的界面中,在“将级别链接到样式”中选择“标题一”,点击确定,如图:

此时,重复第2步操作,即右击图片选择“插入题注”,进行相应设置后点击确定,得到如图所示:

此时这个图的注释/题注是有“灵魂的”,不再是单纯的文本,进而可以利用图目录直接进行访问。

5. 插入图目录:

将论文中所有图进行插入题注后便可以在开头插入图目录了,将鼠标定位在Word中需要插入图表目录的地方,点击“引用”,然后点击“插入表目录”,如图:

 然后在弹出的界面中进行相关设置,点击确定,如图:

然后就大功告成了!!!如图:

后记:以上就是相关教程,具体要求还得具体分析并加以变动,插入图和插入表类似,一样的操作,最后希望大家五一假期快乐!

在 Poi Word 插入图表,可以使用以下步骤: 1. 创建一个空白文档并打开它。 2. 创建一个 XWPFDocument 对象,用于在文档插入图表。 ```java XWPFDocument document = new XWPFDocument(); ``` 3. 创建一个 XWPFChart 对象,并设置图表的类型、数据源和标题。 ```java XWPFChart chart = document.createChart(ChartTypes.LINE, new XDDFChartAxisPosition(), new XDDFChartAxisPosition(), 0, 0, 600, 400); XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(0, 0, 0, data[0].length - 1)); XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, data[0].length - 1)); XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, data[0].length - 1)); chart.setTitleText("Line Chart"); chart.setTitleOverlay(false); XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis); XDDFLineChartData.Series series1 = (XDDFLineChartData.Series) data.addSeries(xs, ys1); XDDFLineChartData.Series series2 = (XDDFLineChartData.Series) data.addSeries(xs, ys2); series1.setTitle("Series 1", null); series2.setTitle("Series 2", null); chart.plot(data); ``` 4. 将图表插入到文档指定的位置。 ```java XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); String blipId = document.addPictureData(new FileInputStream(chartFile), Document.PICTURE_TYPE_PNG); CTInline inline = run.getCTR().addNewDrawing().addNewInline(); CTGraphicalObject graphicalObject = inline.addNewGraphic(); CTGraphicData graphicData = graphicalObject.addNewGraphicData(); graphicData.setUri(GraphicData.URI_PICTURES + blipId); inline.setDistT(0); inline.setDistB(0); inline.setDistL(0); inline.setDistR(0); ``` 其,chartFile 是保存图表的文件路径。 完整的代码示例: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xddf.usermodel.chart.*; import org.apache.poi.xddf.usermodel.chart.XDDFChartAxisPosition; import org.apache.poi.xwpf.usermodel.*; public class InsertChartExample { public static void main(String[] args) throws Exception { // 创建一个空白文档并打开它 XWPFDocument document = new XWPFDocument(); // 创建一个表格,并在其填充数据 XWPFTable table = document.createTable(); String[][] data = new String[][]{{"Month", "Sales 1", "Sales 2"}, {"Jan", "10.0", "20.0"}, {"Feb", "20.0", "30.0"}, {"Mar", "30.0", "40.0"}}; for (int i = 0; i < data.length; i++) { XWPFTableRow row = table.getRow(i); for (int j = 0; j < data[i].length; j++) { XWPFTableCell cell = row.getCell(j); if (cell == null) { cell = row.createCell(); } cell.setText(data[i][j]); } } // 在表格下面插入一个段落,用于插入图表 XWPFParagraph paragraph = document.createParagraph(); // 创建一个图表,并设置图表的类型、数据源和标题 XWPFChart chart = document.createChart(ChartTypes.LINE, new XDDFChartAxisPosition(), new XDDFChartAxisPosition(), 0, 0, 600, 400); XSSFChart xssfChart = (XSSFChart) chart.getPackagePart().getPackage().createRelationship(XSSFRelation.CHART, XSSFRelation.NS_SPREADSHEETML, generateChartName(document)).getDocumentPart(); XSSFSheet sheet = xssfChart.getWorkbook().createSheet("Sheet1"); for (int i = 0; i < data.length; i++) { XSSFRow row = sheet.createRow(i); for (int j = 0; j < data[i].length; j++) { XSSFCell cell = row.createCell(j); if (i == 0) { cell.setCellValue(data[i][j]); } else { cell.setCellValue(Double.parseDouble(data[i][j])); } } } XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(0, 0, 0, data[0].length - 1)); XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, data[0].length - 1)); XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, data[0].length - 1)); chart.setTitleText("Line Chart"); chart.setTitleOverlay(false); XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM); bottomAxis.setTitle("Month"); XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT); leftAxis.setTitle("Sales"); XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis); XDDFLineChartData.Series series1 = (XDDFLineChartData.Series) data.addSeries(xs, ys1); XDDFLineChartData.Series series2 = (XDDFLineChartData.Series) data.addSeries(xs, ys2); series1.setTitle("Series 1", null); series2.setTitle("Series 2", null); chart.plot(data); // 将图表插入到文档指定的位置 XWPFRun run = paragraph.createRun(); String blipId = document.addPictureData(new FileInputStream("chart.png"), Document.PICTURE_TYPE_PNG); CTInline inline = run.getCTR().addNewDrawing().addNewInline(); CTGraphicalObject graphicalObject = inline.addNewGraphic(); CTGraphicData graphicData = graphicalObject.addNewGraphicData(); graphicData.setUri(GraphicData.URI_PICTURES + blipId); inline.setDistT(0); inline.setDistB(0); inline.setDistL(0); inline.setDistR(0); // 将文档保存到文件 FileOutputStream out = new FileOutputStream("document.docx"); document.write(out); out.close(); document.close(); } private static String generateChartName(XWPFDocument document) { int i = 1; while (document.getPackagePart().getRelationshipsByType(XSSFRelation.CHART, XSSFRelation.NS_SPREADSHEETML).size() > 0) { String name = "Chart" + i; if (document.getPackagePart().getRelationshipsByType(XSSFRelation.CHART, XSSFRelation.NS_SPREADSHEETML).stream().anyMatch(r -> r.getTargetURI().toString().endsWith(name + ".xml"))) { i++; } else { return name; } } return "Chart1"; } } ``` 其,chart.png 是保存图表的文件,需要先将图表保存为片。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏模棱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值