自制田字格word

背景

孩子上小学要开始学认字了,每周有好多字要打印,要是直接拿一张A4纸去打印,字的排版就显得尤为重要,排过来排过去,总感觉不够正式。就想去网上搜一个可以下载的田字格模板。某度搜了半天,倒是搜到一堆好看的模板,要不就是收费下载,要不就是开VIP下载,还有更过分的,打着免费下载的旗号,下载之后,其实是一个免费的app,app可以选择模板制作各种word,要打印或导出的时候就让开永久VIP或者按月的VIP。哥啥东西没见过,套路呀,真多!之前就为了下载一个ppt模板开了个永久VIP,反正看着也便宜,永久的才39.9,谁知道开完没过多久网站就没了,我估计是换了个网站又继续运营去了。跟现在的培训机构跑路一个道理。那我果断不能开VIP啊,就捉摸着自己整个word来吧。

先看一下成品,看看是不是你们想要的,如果不是,请出门左拐去隔壁。

话不多说,直接开干。下面我会详细的来说一下怎么操作吧

  1. 新建一个word
  2. 在word上画田字格
  • 我用wps,直接插入一个表格

插入之后是这样的,别慌

我们需要调整一下表格的长度和宽度,选中表格,右键,打开表格属性

调整行和列的高度为0.8,这里可以根据个人爱好来调整田字格的大小

调整之后的样子

我们可以点击右侧的加号来添加田字格的数量,直到顶满(这里可以先不做,可以直接复制完成之后的田字格

  • 接下来要将田字格中间的横和竖转换成虚线
    选中第一个田字格,同样是右键,打开边框和底纹

    先选择方框,线型选择实线(把方框变实线)
    再选择自定义,线型选择虚线,颜色根据个人爱好设置,选择右侧的横线和竖线

    就变成了一个田字格,还可以根据个人爱好选择线条的宽度,这样一个田字格就做好了

突然发现,要把这一排都变成田字格还挺麻烦,接下来就来复制吧,先把后边的格子选中,删除,再点➕,复制田字格

这里复制出来的田字格边界不清晰,还得设置,这块儿没别的好办法,一个格子一个格子设置吧,仍然是打开边框和底纹 来设置,这里也比较简单,第一个田字格不需要设置,后边选中格子之后点击左侧竖线即可

相信细心的朋友也都发现了,这里还有对角线,可以画米字格了,有需要的朋友可以学起来

好了,到此一行田字格完成

那就有人疑惑了,这个格子怎么写字呢。。。。因为你写的字很可能就写到格子里了,比如这样的

  • 如何写出楷体的字体
    插入一个文本框

    这里写字,调整字体为楷体,大小为小初,并且调整边框颜色和背景色为

    这个文本框中文字稍微靠下靠右,所以需要将格子左移上移一点点,正好对应田字格的正中央。这样的字体看起来端庄大方。
    下面就是复制这个文本框给每一个田字格补充字了
    你只需要不停的复制粘贴就可以了,很快就可以得到一个完整的田字格文档啦

    是不是很有成就感,你以为这就完啦?并没有
    首先这样做出来的田字格相当于是一个模板,每次都需要复制出来一份,删除旧的文字,写上新的文字,看似很简单,实则一点儿也不难。但就是挺浪费时间。

接下来就有点专业了,要用代码去提高生产效率。非专业人士就到这结束吧。

我想只输入一行文字,他自动帮我填充到表格中。

  1. 首先将模板另存为xml格式,打开之后你肯定不认识里面的内容,将其格式化一下。
  2. 通过springboot+freemarker实现自动将输入的文字填充到word中。
    话不多说,上代码
    talk is cheap, show me the code
java 复制代码
	private final Configuration configuration;
	
	@GetMapping("/testdoc")
    private ResponseEntity<byte[]> testDoc(@RequestParam(name = "word") String word) throws IOException, TemplateException {

        Map<String, Object> dataModel = new HashMap<>();
        for (int i = 0; i < word.length(); i++) {
            dataModel.put("str" + i, word.charAt(i));
        }
        Template template = configuration.getTemplate("test.ftl");
        String processedHtml = FreeMarkerTemplateUtils.processTemplateIntoString(template, dataModel);
        // 将HTML转换为Word文档(此处简化处理,实际可能需要使用Apache POI等库)
        byte[] wordBytes = convertHtmlToWord(processedHtml);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", "document.docx");
        return new ResponseEntity<>(wordBytes, headers, HttpStatus.OK);
    }

    private byte[] convertHtmlToWord(String html) {
        // 这里省略了HTML转Word的具体实现,可以使用第三方库如Apache POI等
        return html.getBytes(); // 这只是示例,实际返回的应该是Word文档的字节流
    }

代码比较简单

yml文件配置

yml 复制代码
spring:
	freemarker:
	    suffix: .ftl
	    charset: UTF-8
	    template-loader-path: classpath:/templates/

xml文件改一下后缀放到这个位置

pom.xml文件需要引这个

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

到这里你可以对外提供服务了,请求get接口,直接可以生成一个doc文件

http://localhost:8080/testdoc?word=你好吗

后边媳妇再要打印认字卡,可以直接通过这种方式生成了。撒花✿✿ヽ(°▽°)ノ✿

相关推荐
小安同学iter几秒前
Java进阶五 -IO流
java·开发语言·intellij-idea
Hello World and You几秒前
R ggplot2 绘图细节 geom_text展示不全 y轴坐标细节 x轴标题
开发语言·r语言
sukalot4 分钟前
windows C#-异步文件访问
开发语言·c#
尽兴-11 分钟前
Redis模拟延时队列 实现日程提醒
java·redis·java-rocketmq·mq
熬夜学编程的小王23 分钟前
【C++篇】从基础到进阶:全面掌握C++ List容器的使用
开发语言·c++·list·双向链表·迭代器失效
悄悄敲敲敲25 分钟前
C++:智能指针
开发语言·c++
书埋不住我31 分钟前
java第三章
java·开发语言·servlet
boy快快长大33 分钟前
将大模型生成数据存入Excel,并用增量的方式存入Excel
java·数据库·excel
孟秋与你36 分钟前
【spring】spring单例模式与锁对象作用域的分析
java·spring·单例模式
好开心3339 分钟前
javaScript交互案例2
开发语言·前端·javascript·html·ecmascript·交互