您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

AutoExcel——Excel导入导出工具 <网站代码>

  • 时间:2022-08-28 01:04 编辑: 来源: 阅读:312
  • 扫一扫,手机访问
摘要:AutoExcel——Excel导入导出工具 <网站代码>
GitHub地址|博客|中文|为什么英文要用AutoExcel?Excel导入导出在软件开发中非常常见。只要接触过开发,就一定会遇到。 相信很多人会和我一样选择Apache POI来完成这部作品。在感受POI强大功能的同时,我的团队也遇到了以下问题:直接使用POI操作Excel会生成大量的硬代码,你会在代码中编写大量的行索引和列索引的不可重用的格式控制代码,比如背景色、对齐方式、单元格样式等。实施顾问显然提供了现成的模板。但是需要用代码再次开发实现,效率很低。在调整模板时,我们不得不使用开发资源。简单导出也需要写具体代码。AutoExcel解决了以上问题,而且非常简单,复杂的导入导出只需要一些代码就可以完成。使用时,程序员对导入导出没有感觉,即不需要直接操作POI;同时,实施顾问提供的Excel是导入导出模板。除非添加新的数据源或字段,否则模板升级不需要使用开发资源。 AutoExcel并没有过度封装POI,而是充分利用了Excel自身的特点——名称管理器。通过一些技巧,它将单元格映射到数据源,从而将程序员与POI解耦,避免硬编码,并使导入和导出工作变得愉快而不是枯燥。 导出前函数预览,导出后imageimageimageimageimageimageimageimageimage实现以上导出。只需编写下面的代码(需要额外的代码来准备数据源,比如从数据库中获取)。目录 借助一些报表制作工具,比如微软的RDL,你可以在RDL制作一个导出模型,然后结合代码将数据导出到Excel。 在这个过程中,RDL只起到中介的作用,也就是说每次有新的出口任务,都要先做出一个出口模型。 在AutoExcel中,Excel是模板。如果您的Excel源是实施顾问,则该Excel可能已经设置了数据格式和单元格样式等。,就等你填数据了。既然如此,为什么不用这个Excel作为我们的导出模板呢?我们要做的就是把我们的东西加进去。 名称管理器Excel中被大多数人忽略的名称管理器,在AutoExcel中成为了数据源和单元格之间的桥梁。 可以点击菜单公式->名称管理器打开名称管理器,其中每个名称对应Excel中的一个特定位置,可以是一个范围,也可以是一个单元格。当然,在这里,我们定义的所有名称都指向细胞。 所以可以理解为名称管理器是用来命名单元格的。 因为单元格有名字,我们可以自动给单元格赋值,不需要个性化的代码。 为图像单元格定义名称后,再次单击该单元格时,会发现刚刚定义的名称显示在左上角。除了在名称管理器中添加新名称之外,还有一种更直观、更快捷的方法。 点击想要命名的单元格,然后直接在左上角输入名称,最后按回车键。 建议以这种方式创建名称。 图像规则因为单元格名称决定了哪些数据以什么方式填充,所以必须按照以下规则命名:数据源名称。字段名[。合计类型],用于填充常用字段或常用字段的合计值,如:product。SaleArea.sum数据源name.formula.xxxx,用于填充公式。比如产品。Formula.1数据源名称。RowNo用于填写行号。例如,产品的所有名称。RowNo是不区分大小写的,基本对象图像会根据具体场景导出。如图所示,每个单元格的名称都在注释中指明。按照数据源名和字段名的规则写Java代码:string template path = this . getclass()。get resource("/template/common . xlsx ")。getpath();String outputPath = this.getClass()。getResource("/")。getPath()+" exportwithtemplate . xlsx ";//data generator . genbusinesssunit()用于生成演示数据templateexportpara = new templateexportpara("业务单元",data generator . genbusinesssunit());AutoExcel.save(templatePath,outputPath,para);单表图像如果要导出一列数据,只需要按照基本对象的书写规则命名即可。 当然,列表数据的导出往往比基本对象更复杂。例如,您可能需要一个行号列表,但您不想在代码中做特殊的解决方案。此时,您可以使用数据源名称。RowNo并把工作留给AutoExcel去解决。 请注意,RowNo是一个内置字段。如果数据源包含此字段,它将被覆盖。 另一种非常常见的情况是,您的表格中有一个带有公式的单元格,例如=E6+F6,您希望下一行的单元格被赋值为=E7+F7。此时,您应该使用数据源名称。Formula.xxxx你可以使用任何你喜欢的公式,AutoExcel最终会自动为你填充。 xxxx部分可以随便写,只要名字唯一即可。 公式也是一个内置字段。 Java代码:字符串模板路径= this.getclass()。get resource("/template/common . xlsx ")。getpath();String outputPath = this.getClass()。getResource("/")。getPath()+" exportwithtemplate . xlsx ";//DataGenerator.genContracts()用于生成演示数据templateexportpara = newtemplateexportpara(" contract ",data generator . gen contracts());AutoExcel.save(templatePath,outputPath,para);多表图像在一个工作表中导出多个表。如果有这样的需求,请在代码中将不在底部的表的导出参数设置为setInserted(true)。如上图所示,产品对应的导出参数para应设置如下:para.setInserted(true) 要知道,AutoExcel是忽略数据导出是否有足够的空间的,它只会不停的输出,所以当你的模板空间不够的时候,你需要告诉AutoExcel,然后AutoExcel会腾出足够的空间来容纳你的数据再导出。 这里引入一个新的命名规则:数据源名称、字段名称、合计类型,用于对指定字段进行合计。目前,支持两种合计类型:Sum和Avg。 Java代码:字符串模板路径= this.getclass()。get resource("/template/common . xlsx ")。getpath();String outputPath = this.getClass()。getResource("/")。getPath()+" exportwithtemplate . xlsx ";列表& ltTemplateExportPara & gtparas = new ArrayList & lt& gt();//DataGenerator.genProjects()用于生成演示数据para . add(new templateexportpara(" project ",data generator . gen projects());//DataGenerator.genProducts()用于生成演示数据templateexportpara = newtemplateexportpara(" product ",data generator . gen products());para . set inserted(true);//导出空间不足时设置paras . add(para);AutoExcel.save(templatePath,outputPath,paras);向右填充图像如果需要向右而不是向下填充数据,只需要使用setdata direction(数据方向。对)。 Java代码:字符串模板路径= this.getclass()。get resource("/template/common . xlsx ")。getpath();String outputPath = this.getClass()。getResource("/")。getPath()+" exportwithtemplate . xlsx ";TemplateExportPara para = new TemplateExportPara(" product 2 ",data generator . gen products());para.setDataDirection(数据方向。对);//右边填充autoexcel.save(模板路径,输出路径,para);直接导出直接导出,即导出过程不需要模板的帮助,适合集成到后端系统的通用导出功能中。代码很简单string输出path = this.getclass()。getresource ("/")。getpath()+" export . xlsx ";DirectExportPara para = new DirectExportPara(data generator . gen projects());AutoExcel.save(outputPath,para);效果:形象当然,你不会喜欢这个标题和标题顺序。因此,您需要使用FieldSetting来使您的标题可读,并按照您喜欢的顺序显示它们。 列表& lt字段设置& gtfieldSettings = new ArrayList & lt字段设置& gt(){ { add(new field setting(" projName ","项目名"));add(新字段设置(" basalArea ","基础面积"));add(new field setting(" Building Area "," Building Area "));add(新字段设置(" insideArea "," Inside Area "));add(新字段设置(" availableArea ","可用区域"));add(新字段设置(" availablePrice ","可用价格"));add(新的FieldSetting("availableAmount ","可用金额"));}};String outputPath = this.getClass()。getResource("/")。getPath()+" export . xlsx ";DirectExportPara para = new DirectExportPara(data generator . gen Projects(),“项目”,field settings);AutoExcel.save(outputPath,para);最终效果:图像设置自己的操作。AutoExcel致力于解决常见的导入和导出方案。如果有个性化的需求,你要收回工作簿的控制权,根据自己的需求做出个性化的解决方案。 Save方法提供了两个消费者,其中actionAhead会在导出操作开始前调用,actionBehind会在导出完成后调用。你可以通过这两个消费者添加你想要的功能。 string template path = this . getclass()。get resource("/template/common . xlsx ")。getPath();String outputPath = this.getClass()。getResource("/")。getPath()+" exportwithtemplate . xlsx ";列表& ltTemplateExportPara & gtparas = new ArrayList & lt& gt();paras . add(new TemplateExportPara(" business unit ",data generator . genbusinessunit()));消费者& lt工作簿& gtaction ahead = Workbook-& gt;{//随心所欲};消费者& lt工作簿& gtaction behind = workbook-& gt;{//随心所欲};AutoExcel.save(templatePath,outputPath,paras,actionAhead,action behind);与导出相比,导入有以下特点:只支持一个名称规则:数据源名称。字段名暂时不支持一张表有多个表的情况。默认的DataDirection为null,即读取基本对象。如果要读列表,要注明阅读方向是向下的,暂时不支持向右的阅读。 Java代码:列表


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部