.net core 3.1框架引用NPOI动态导出World文档,包含分页、单元格合并基本功能

news/2024/4/19 2:11:18

.net core 3.1框架引用NPOI动态导出World文档,包含分页、单元格合并基本功能

  • 1.引用第三方库NPOI
    • 动态生成表格实体类
    • 生成wrold文本样式
    • 测试调用
    • 生成效果
  • 参考文章

1.引用第三方库NPOI

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200715165359496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQzMzM4,size_16,color_FFFFFF,t_70)

动态生成表格实体类

using ExportWorld.Utility;
using Newtonsoft.Json.Linq;
using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.XWPF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;namespace ExportWorld
{public class SaveWorld{/// <summary>/// 外部调用/// </summary>/// <param name="title"></param>/// <param name="subTitle"></param>/// <param name="headInfo"></param>/// <param name="dt"></param>/// <param name="footInfo"></param>/// <param name="page">页数(测试用)</param>public static void Show(string title, string subTitle, JObject headInfo, DataTable dt, JObject footInfo, int page){string workFileName = "入库单8";var uploadPath = @"D:\C#Test\ExportWorld\Save";string fileName = string.Format("{0}.docx", workFileName, System.Text.Encoding.UTF8);if (!Directory.Exists(uploadPath)){Directory.CreateDirectory(uploadPath);}using (var stream = new FileStream(Path.Combine(uploadPath, fileName), FileMode.Create, FileAccess.Write)){//创建document文档对象对象实例XWPFDocument document = new XWPFDocument();document.Document.body.sectPr = new CT_SectPr();CT_SectPr m_SectPr = document.Document.body.sectPr;//页面设置A4横向m_SectPr.pgSz.w = (ulong)16838;m_SectPr.pgSz.h = (ulong)11906;#region 创建表格FillWorldData(document, title, subTitle, headInfo, dt, footInfo);//测试分页if (page != 0){XWPFParagraph xWPFParagraph = document.CreateParagraph();xWPFParagraph.CreateRun().AddBreak();//分页FillWorldData(document, title, subTitle, headInfo, dt, footInfo);}#region 页脚CT_Ftr m_ftr = new CT_Ftr();m_ftr.Items = new System.Collections.ArrayList();CT_SdtBlock m_Sdt = new CT_SdtBlock();CT_SdtPr m_SdtPr = m_Sdt.AddNewSdtPr();CT_SdtDocPart m_SdtDocPartObj = m_SdtPr.AddNewDocPartObj();m_SdtDocPartObj.AddNewDocPartGallery().val = "PageNumbers (Bottom of Page)";m_SdtDocPartObj.docPartUnique = new CT_OnOff();CT_SdtContentBlock m_SdtContent = m_Sdt.AddNewSdtContent();CT_P m_SdtContentP = m_SdtContent.AddNewP();CT_PPr m_SdtContentPpPr = m_SdtContentP.AddNewPPr();m_SdtContentPpPr.AddNewJc().val = ST_Jc.center;m_SdtContentP.Items = new System.Collections.ArrayList();CT_SimpleField m_fldSimple = new CT_SimpleField();m_fldSimple.instr = " PAGE   \\*MERGEFORMAT ";m_SdtContentP.Items.Add(m_fldSimple);m_ftr.Items.Add(m_Sdt);XWPFRelation Frelation = XWPFRelation.FOOTER;XWPFFooter m_f = (XWPFFooter)document.CreateRelationship(Frelation, XWPFFactory.GetInstance(), document.FooterList.Count + 1);m_f.SetHeaderFooter(m_ftr);CT_HdrFtrRef m_HdrFtr = m_SectPr.AddNewFooterReference();m_HdrFtr.type = ST_HdrFtr.@default;m_HdrFtr.id = m_f.GetPackageRelationship().Id;#endregiondocument.Write(stream);#endregion}}/// <summary>/// 合并区域(有问题)/// </summary>/// <param name="table"></param>/// <param name="fromCol"></param>/// <param name="toCol"></param>/// <param name="fromRow"></param>/// <param name="toRow"></param>private static void MyMergeCells(XWPFTable table, int fromCol,int toCol, int fromRow, int toRow){for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++){if (fromCol < toCol){table.GetRow(rowIndex).MergeCells(fromCol, toCol);//合并列}XWPFTableCell cell = table.GetRow(rowIndex).GetCell(fromCol);CT_Tc cttc = cell.GetCTTc();if (cttc.tcPr == null){cttc.AddNewTcPr();}//第一个合并单元格用重启合并值设置if (rowIndex == fromRow){cell.GetCTTc().AddNewTcPr().AddNewVMerge().val = ST_Merge.restart;}else{//合并第一个单元格的单元被设置为“继续”cell.GetCTTc().AddNewTcPr().AddNewVMerge().val = ST_Merge.@continue;}}}/// <summary>/// 动态生成表格填充数据/// </summary>/// <param name="document"></param>/// <param name="title">标题</param>/// <param name="subTitle">副标题</param>/// <param name="headInfo">表格头部信息</param>/// <param name="dt">表格中间数据集</param>/// <param name="footInfo">表格底部信息</param>/// <param name="fontColor">字体颜色</param>/// <returns></returns>public static string FillWorldData(XWPFDocument document, string title, string subTitle, JObject headInfo, DataTable dt, JObject footInfo, string fontColor = "000000"){try{int rows = 0, cols = 0, index = 0, temp = 0, startRow = 0, count=1;if (!string.IsNullOrWhiteSpace(title))rows += 1;if (!string.IsNullOrWhiteSpace(subTitle))rows += 1;if (headInfo != null && headInfo.Count > 0){count += ((headInfo.Count) % 2 == 1 ? headInfo.Count / 2 : headInfo.Count / 2 - 1);rows += count;}if (footInfo != null && footInfo.Count > 0){count = 1;count += ((footInfo.Count) % 2 == 1 ? footInfo.Count / 2 : footInfo.Count / 2 - 1);rows += count;}if (dt != null && dt.Rows.Count > 0){rows += dt.Rows.Count;cols += dt.Columns.Count;}XWPFTable firstXwpfTable = document.CreateTable(rows, cols);//创建表格firstXwpfTable.Width = 5500;//总宽度if (!string.IsNullOrWhiteSpace(title.Trim())){firstXwpfTable.GetRow(startRow).MergeCells(0, cols - 1);//合并列firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, title, ParagraphAlignment.CENTER, 24, true, 22, fontColor));//标题startRow++;}if (!string.IsNullOrWhiteSpace(subTitle.Trim())){firstXwpfTable.GetRow(startRow).MergeCells(0, cols - 1);//合并列firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, subTitle, ParagraphAlignment.CENTER, 24, true, 16, fontColor));//附标题startRow++;}if (headInfo != null && headInfo.Count > 0)//头部{foreach (var item in headInfo){temp = startRow;if (index % 2 == 0){firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Key, ParagraphAlignment.CENTER, 24, true, 10, fontColor));firstXwpfTable.GetRow(startRow).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Value.ToString(), ParagraphAlignment.CENTER, 24, false, 10, fontColor));}else{firstXwpfTable.GetRow(startRow).GetCell(cols - 2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Key, ParagraphAlignment.CENTER, 24, true));firstXwpfTable.GetRow(startRow).GetCell(cols - 1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Value.ToString(), ParagraphAlignment.CENTER, 24, false, 10, fontColor));if (!index.Equals(headInfo.Count - 1)){startRow++;}}index++;}//MyMergeCells(firstXwpfTable, 2, cols-3,startRow-1, temp + ((index % 2) == 1 ? index / 2 : index / 2 - 1)-1);//合并区域startRow++;}if (dt != null && dt.Rows.Count > 0)//中间数据{if (headInfo != null && headInfo.Count > 0){//合并单元格firstXwpfTable.GetRow(startRow).MergeCells(0, cols - 1);//合并startRow++;}for (int j = 0; j < dt.Columns.Count; j++){firstXwpfTable.GetRow(startRow).GetCell(j).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, dt.Columns[j].ToString(), ParagraphAlignment.CENTER, 24, true, 10, fontColor));//列名加粗}startRow++;for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){firstXwpfTable.GetRow(startRow).GetCell(j).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, dt.Rows[i][j].ToString(), ParagraphAlignment.CENTER, 24, false, 10, fontColor));}if (i == dt.Rows.Count - 1){firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, dt.Rows[i][0].ToString(), ParagraphAlignment.CENTER, 24, true, 10, fontColor));//最后一行列名加粗}startRow++;}}if (footInfo != null && footInfo.Count > 0)//尾部{if (dt != null && dt.Rows.Count > 0){firstXwpfTable.GetRow(startRow).MergeCells(0, cols - 1);//合并firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "", ParagraphAlignment.LEFT, 10, false, 10, fontColor));startRow++;}index = 0;foreach (var item in footInfo){temp = startRow;if (index % 2 == 0){firstXwpfTable.GetRow(startRow).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Key, ParagraphAlignment.CENTER, 24, true));firstXwpfTable.GetRow(startRow).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Value.ToString(), ParagraphAlignment.CENTER, 24, false, 10, fontColor));}else{firstXwpfTable.GetRow(startRow).GetCell(cols - 2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Key, ParagraphAlignment.CENTER, 24, true));firstXwpfTable.GetRow(startRow).GetCell(cols - 1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Value.ToString(), ParagraphAlignment.CENTER, 24, false, 10, fontColor));if (!index.Equals(footInfo.Count - 1)){startRow++;}}index++;}//MyMergeCells(firstXwpfTable, 2, 1,startRow, temp + ((index % 2) == 1 ? index / 2 : index / 2 - 1));//合并区域}}catch (Exception ex){return ex.Message;}return "";}}
}

生成wrold文本样式

using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.XWPF.UserModel;
using System;
using System.Collections.Generic;
using System.Text;namespace ExportWorld.Utility
{public class NpoiWordParagraphTextStyleHelper{private static NpoiWordParagraphTextStyleHelper _exportHelper;public static NpoiWordParagraphTextStyleHelper _{get => _exportHelper ?? (_exportHelper = new NpoiWordParagraphTextStyleHelper());set => _exportHelper = value;}/// <summary>/// 创建word文档中的段落对象和设置段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)/// </summary>/// <param name="document">document文档对象</param>/// <param name="fillContent">段落第一个文本对象填充的内容</param>/// <param name="isBold">是否加粗</param>/// <param name="fontSize">字体大小</param>/// <param name="fontFamily">字体</param>/// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>/// <param name="isStatement">是否在同一段落创建第二个文本对象(解决同一段落里面需要填充两个或者多个文本值的情况,多个文本需要自己拓展,现在最多支持两个)</param>/// <param name="secondFillContent">第二次声明的文本对象填充的内容,样式与第一次的一致</param>/// <param name="fontColor">字体颜色--十六进制</param>/// <param name="isItalic">是否设置斜体(字体倾斜)</param>/// <returns></returns>public XWPFParagraph ParagraphInstanceSetting(XWPFDocument document, string fillContent, bool isBold, int fontSize, string fontFamily, ParagraphAlignment paragraphAlign, bool isStatement = false, string secondFillContent = "", string fontColor = "000000", bool isItalic = false){XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐)XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象xwpfRun.IsBold = isBold;//文字加粗xwpfRun.SetText(fillContent);//填充内容xwpfRun.FontSize = fontSize;//设置文字大小xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定if (!isStatement) return paragraph;XWPFRun secondXwpfRun = paragraph.CreateRun();//创建段落文本对象secondXwpfRun.IsBold = isBold;//文字加粗secondXwpfRun.SetText(secondFillContent);//填充内容secondXwpfRun.FontSize = fontSize;//设置文字大小secondXwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)secondXwpfRun.SetColor(fontColor);//设置字体颜色--十六进制secondXwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定return paragraph;}/// <summary>  /// 创建Word文档中表格段落实例和设置表格段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)/// </summary>  /// <param name="document">document文档对象</param>  /// <param name="table">表格对象</param>  /// <param name="fillContent">要填充的文字</param>  /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>/// <param name="textPosition">设置文本位置(设置两行之间的行间,从而实现表格文字垂直居中的效果),从而实现table的高度设置效果  </param>/// <param name="isBold">是否加粗(true加粗,false不加粗)</param>/// <param name="fontSize">字体大小</param>/// <param name="fontColor">字体颜色--十六进制</param>/// <param name="isItalic">是否设置斜体(字体倾斜)</param>/// <returns></returns>  public XWPFParagraph SetTableParagraphInstanceSetting(XWPFDocument document, XWPFTable table, string fillContent, ParagraphAlignment paragraphAlign, int textPosition = 24, bool isBold = false, int fontSize = 10, string fontColor = "000000", bool isItalic = false){var para = new CT_P();//设置单元格文本对齐para.AddNewPPr().AddNewTextAlignment();XWPFParagraph paragraph = new XWPFParagraph(para, table.Body);//创建表格中的段落对象paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐)//paragraph.FontAlignment =Convert.ToInt32(ParagraphAlignment.CENTER);//字体在单元格内显示位置与 paragraph.Alignment效果相似XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象xwpfRun.SetText(fillContent);xwpfRun.FontSize = fontSize;//字体大小xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)xwpfRun.IsBold = isBold;//是否加粗xwpfRun.SetFontFamily("宋体", FontCharRange.None);//设置字体(如:微软雅黑,华文楷体,宋体)return paragraph;}}
}

测试调用

 static void Main(string[] args){try{DataTable dt = new DataTable();dt.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));dt.Columns.Add(new DataColumn("Age", Type.GetType("System.Int32")));dt.Columns.Add(new DataColumn("Score", Type.GetType("System.Decimal")));dt.Columns.Add(new DataColumn("CreateTime", Type.GetType("System.DateTime")));dt.Columns.Add(new DataColumn("cloum1", Type.GetType("System.Int32")));dt.Columns.Add(new DataColumn("cloum2", Type.GetType("System.Int32")));dt.Columns.Add(new DataColumn("cloum3", Type.GetType("System.Int32")));DataRow dr = dt.NewRow();dr["Name"] = "张三";dr["Age"] = 28;dr["Score"] = 85.5;dr["CreateTime"] = DateTime.Now;dr["cloum1"] = 1;dr["cloum2"] =2;dr["cloum3"] = 3;dt.Rows.Add(dr);dr = dt.NewRow();dr["Name"] = "李四";dr["Age"] = 24;dr["Score"] = 72;dr["CreateTime"] = DateTime.Now;dr["cloum1"] = 1;dr["cloum2"] = 2;dr["cloum3"] = 3;dt.Rows.Add(dr);dr = dt.NewRow();dr["Name"] = "王五";dr["Age"] = 36;dr["Score"] = 63.5;dr["CreateTime"] = DateTime.Now;dr["cloum1"] = 1;dr["cloum2"] = 2;dr["cloum3"] = 3;dt.Rows.Add(dr);dr = dt.NewRow();dr["Name"] = "合计";dr["Age"] = 100;dr["Score"] = 100;dt.Rows.Add(dr);string checkTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");JObject head = new JObject();head["入库单号"] = "DPT-20200707-0000012";head["创建日期"] = checkTime;head["操作员"] = "哈哈";JObject foot = new JObject();foot["入库用户"] = "喜喜";foot["签名"] = "";SaveWorld.Show("入库单","",head,dt,foot,2);}catch (Exception ex){throw ex;}}

生成效果

在这里插入图片描述

参考文章

https://www.cnblogs.com/Can-daydayup/p/11588531.html @追逐时光者
等其它一些优秀文章,不好之处请见谅,错误之处请大佬们指出。
word合并区域还存在问题,希望有人能帮忙指导一下
亲测可用!!!


http://www.ppmy.cn/news/269691.html

相关文章

POI批量替换world文档XWPFParagraph.getRuns 出现分段混乱(附源码)

问题&#xff1a;在操作POI替换world时发现getRuns将我们预设的${product}自动切换成了 ${product, }] ${product } 成了两个部分 解决方法一。(未尝试) 强制把List中的内容合并成一个字符串&#xff0c;替换内容后&#xff0c;把段落中的XWPFRun全部remove掉&#xff0c;然…

软考A计划-系统架构师-官方考试指定教程-(2/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

javaScript蓝桥杯---视频弹幕

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚⾄更多动作特效⽅式出现在视频上&#xff0c;是观看视频的⼈发送的简短评论。通过发送弹幕可以给观众⼀种“实时互动”的错觉&#xff0c;弹幕的出现让观…

RK3588平台开发系列讲解(同步与互斥篇)自旋锁死锁实验

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、自旋锁死锁二、实验程序的编写2.1、驱动程序编写2.2、编写测试 APP沉淀、分享、成长,让自己和他人都能有所收获!😄 📢自旋锁若是使用不当就会产生死锁,在本篇将会对自旋锁的特殊情况-死锁进行讲解。 一、自…

系统架构设计师笔记第8期:信息加解密技术

信息加解密技术是指用于保护数据安全性和隐私的技术方法。随着信息技术的发展和网络通信的普及&#xff0c;信息加解密技术也得到了广泛的应用和不断的发展。下面是信息加解密技术发展的主要阶段和趋势&#xff1a; 古典加密技术&#xff1a;古典加密技术是信息加解密技术的起…

凯立德导航 3P21J30 2023年最新版车载版下载

自己动手下载 2022年更新路段。道路测绘 安装简单 链接&#xff1a;https://pan.baidu.com/s/1FjAFyPyKiQ5P9pZhImmKvQ 提取码&#xff1a;1111

导航远峰e路航v700pro刷机包

远峰e路航v700pro刷机包 下载&#xff0c;解压&#xff0c;放在SD卡&#xff0c;用针戳一下导航后面的reset孔&#xff0c;即可自动安装升级 链接&#xff1a;https://pan.baidu.com/s/1S9XI3UpYClUDXCQk58ycrA 提取码&#xff1a;rzpr 若连接失效&#xff0c;群文件自取&…

远峰E路航V700pro进入wince桌面方法与安装游戏方法

1.插上TF卡&#xff0c;根目录上拷YFGo2CE.bld 下载YFGO2CE.rar 远峰CE引导程序 &#xff08;YFGo2CE.bld&#xff09;&#xff0c;若连接失效&#xff0c;群文件自取&#xff08;289186279&#xff09; 2.机器背面reset 3.进入win ce系统 4.进入wince资源管理器 进入resi…

e路航 LH900N地图升级

e路航 LH900N经济型 分辨率480-272 升级地址&#xff1a; 1、雅客糖导航升级专区http://www.wandigi.com/bbs/forum.php?modviewthread&tid5127&extrapage%3D1 2、http://www.elh.hk/ditu/ 端口、波特率修改方法&#xff1a;把卡插计算机上&#xff0c;看Navione文…

华创e路航固件_华创e路航地图官方版

华创e路航地图官方版是一款新型导航地图包。使用华创e路航地图官方版用户就可以快速知道最近的线路&#xff0c;软件操作也很简单&#xff0c;直接将这个地图包复制到车辆的导航仪中就可以了。 功能介绍 1、设置好导航路径后&#xff0c;点击导航这个图标会运行相应的程序&…

华创e路航固件_华创e路航地图升级

华创e路航地图升级下载&#xff01;华创e路航地图升级包是华创e路航的地图包&#xff01;有了这款软件用户就可以快捷的知道每一个路线的具体情况&#xff0c;软件操作也很简单&#xff0c;直接将这个地图包复制到车辆的导航仪中就可以了&#xff01; 功能介绍 1、设置好导航路…

EC20、EC600s-CN 短信坑

EC20、EC600s-CN短信坑 配置各种参数后新短信没有提示 配置各种参数后新短信没有提示 使用命令配置模块后发短信收不到上报的URC 检查ATCNMI配置的参数是否正确 如果使用串口检查ATQURCCFG是否配置为串口上报URC ATQURCCFG"urcport","uart1" //配置…

JS樱花特效

&#x1f308;前言 最近看到发现一个好看的页面樱花飘落特效&#xff0c;在这里整理一下分享给大家。 &#x1f34a;添加特效 在\themes\next\source\js\src中新建sakura.js文件&#xff0c;并添加以下代码 sakura.js 然后在\themes\next\layout\_layout.swig 文件里<body…

红米AC2100刷固件心得

零、起因 无意间翻到AC2100刷固件的帖子&#xff0c;&#xff0c;然后自己也想尝试一下&#xff0c;&#xff0c;毕竟目前只有25MB/s&#xff0c;觉得不太够用&#xff0c;看到其他人显示的1.7G特别扎眼&#xff0c;也想尝试一下&#xff0c;比较我的才显示867 一、刷Breed We…

信用卡APP评测系列——工银e生活5.0打造个人生活服务平台,引领用户美好生活

易观&#xff1a;中国信用卡市场规模增速趋稳&#xff0c;线上成为存量用户经营主阵地&#xff0c; APP用户高质量经营成为新发力点&#xff0c;也是业务良性增长保障&#xff0c;对此&#xff0c;银行机构着力用户体验竞相升级信用卡APP。工商银行顺势升级工银e生活APP5.0版&a…

樱花樱花想见你 (中日歌词+罗马音+音译)

『さくらさくら会いたいよいやだ君に今すぐ会いたいよ』 樱花&#xff0c;樱花&#xff0c;想见你&#xff0c;不要嘛&#xff0c;现在就想要见你 sakura sakura aitaiyo iyada kimi ni ima sugu aitaiyo 撒库拉 撒库拉 阿姨他一哟 咿呀大 KI米你 一马苏谷 阿姨他一哟 だいじょ…

樱花雨HTML

代码如下&#xff1a; <html> <body> <style type"text/css"> *{margin:0;padding:0;list-style-type:none;} a,img{border:0;} body{font:12px/180% Arial, Helvetica, sans-serif, "新宋体";} </style> <canvas id"sa…

E路航LH950N更换电池全程图解

转载出处&#xff1a;http://bbs.pcauto.com.cn/topic.jsp?tid2184498&authorId8268746 大概是一年前吧&#xff0c;从淘宝网购了一款E路航LH950NGPS导航仪&#xff0c;使用一年的感受是搜星基本快速&#xff0c;定位基本准确&#xff0c;配合凯立德地图在昆明市区使用基本…

e路航

陕西高速公路服务指南&#xff08;出入口/服务区&#xff09; FY03 http://www.xianhans.cn/ 安装新版凯立德地图善领DSA软件电子狗 http://jt360.cn/路况查询实用工具

樱花飘落升级版

鉴于我之前的转发的一篇文章受到不少网友的称赞&#xff0c;所以我打算弄一个更好的回报大家对我的支持&#xff01;同时也借此机会感谢那些一直默默支持我的粉丝&#xff01; 运行的方式是一样的 只要复制代码放到https://www.runoob.com/runcode粘贴上去运行就可以了的&…