当前位置: 首页 > news >正文

Android 使用poi生成Excel ,word并保存在指定路径内

一添加依赖(一定要用新版依赖防止一些bug)

minSdk= 26   //注意最小支持SDK26
dependencies {implementation 'org.apache.poi:poi:5.2.4'implementation 'org.apache.poi:poi-ooxml:5.2.4'implementation 'javax.xml.stream:stax-api:1.0-2'
}

二,创建方法

private void createExcelFile(String Path) {// 创建工作簿Workbook workbook = new XSSFWorkbook();// 创建工作表Sheet sheet = workbook.createSheet("姓名");// 创建行/*   Row row = sheet.createRow(0);// 创建单元格for (int i = 0; i <10 ; i++) {Cell cell = row.createCell(i);// 设置单元格的值cell.setCellValue("Fengfeng");}*/ArrayList<Map<Integer,Object>> arrayList = new ArrayList<>();Map<Integer,Object> m = new HashMap<>();m.put(0,"物料ID");m.put(1,"物料编码");m.put(2,"名称");m.put(3,"编号");m.put(4,"规格");m.put(5,"单位");m.put(6,"单价");m.put(7,"数量");m.put(8,"厂家");m.put(9,"类别");arrayList.add(m);for (int i = 0; i <10 ; i++) {Map<Integer,Object> map = new HashMap<>();map.put(0,"materialID");map.put(1,"materialEncoding");map.put(2,"materialName");map.put(3,"materialModel");map.put(4,"materialSize");map.put(5,"unit");map.put(6,"price");map.put(7,"count");map.put(8,"manufacturers");map.put(9,"type");arrayList.add(map);}Cell cell;int size = arrayList.get(0).size();for (int i = 0;i < arrayList.size();i++){Row row = sheet.createRow(i);Map<Integer, Object> map1 = arrayList.get(i);for (int j = 0;j < size;j++){cell = row.createCell(j);cell.setCellValue((String) map1.get(j));}}// 保存Excel文件try {File file = new File(Path, "example.xlsx");FileOutputStream outputStream = new FileOutputStream(file);workbook.write(outputStream);outputStream.close();Toast.makeText(this, "Excel文件已创建", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}
}

三,如果有表追加的做法(这里使用的是room数据库导入的)

public class DbConvertExcel {public static void appendToExcelFile(Context context, String filePath) {// 工作表名称String sheetName = "test";testDao testDao = testDatabase.getDatabaseInstance(context).getLaserMachDao();try {File file = new File(filePath, "test.xlsx");XSSFWorkbook workbook;Sheet sheet;if (file.exists()) {/*          FileInputStream inputStream = new FileInputStream(file);OPCPackage opc = OPCPackage.open(inputStream);workbook = new XSSFWorkbook(opc);sheet = workbook.getSheet(sheetName);opc.close();  // 关闭OPCPackage*/FileInputStream inputStream = new FileInputStream(file);workbook = new XSSFWorkbook(inputStream);sheet = workbook.getSheet(sheetName);} else {workbook = new XSSFWorkbook();sheet = workbook.createSheet(sheetName);// 添加标题行Row titleRow = sheet.createRow(0);titleRow.createCell(0).setCellValue("编号");titleRow.createCell(1).setCellValue("名称");titleRow.createCell(2).setCellValue("类型");}int lastRowNum = sheet.getLastRowNum();List<test> all = testDao.getAll();for (test test: all) {Row row = sheet.createRow(lastRowNum + 1); // 从最后一行的下一行开始写入row.createCell(0).setCellValue(String.valueOf(test.getId()));row.createCell(1).setCellValue(test.getName());row.createCell(2).setCellValue(String.valueOf(test.getHandType()));lastRowNum++;}FileOutputStream outputStream = new FileOutputStream(file);workbook.write(outputStream);outputStream.close();Toast.makeText(context, "数据已追加到Excel文件", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();Log.e("===========", e.toString());}}
}

四,把Excel 里的数据放回数据库

public static void readFromExcelFile(Context context, String filePath) {try {File file = new File(filePath, "test.xlsx");if (file.exists()) {FileInputStream inputStream = new FileInputStream(file);XSSFWorkbook workbook = new XSSFWorkbook(inputStream);Sheet sheet = workbook.getSheet("test");testDao testDao = testDatabase.getDatabaseInstance(context).getLaserMachDao();Iterator<Row> rowIterator = sheet.iterator();// 跳过标题行if (rowIterator.hasNext()) {rowIterator.next();}while (rowIterator.hasNext()) {Row row = rowIterator.next();test test = new test();test.setId((int) row.getCell(0).getNumericCellValue());test.setName(row.getCell(1).getStringCellValue());test.setHandType((int) row.getCell(2).getNumericCellValue());testDao.insert(test);}Toast.makeText(context, "数据已从Excel文件导入到数据库", Toast.LENGTH_SHORT).show();workbook.close();inputStream.close();} else {// 文件不存在的处理逻辑}} catch (IOException e) {e.printStackTrace();Log.e("===========", e.toString());}
}

相关文章:

Android 使用poi生成Excel ,word并保存在指定路径内

一添加依赖&#xff08;一定要用新版依赖防止一些bug&#xff09; minSdk 26 //注意最小支持SDK26 dependencies {implementation org.apache.poi:poi:5.2.4implementation org.apache.poi:poi-ooxml:5.2.4implementation javax.xml.stream:stax-api:1.0-2 }二&#xff0c;创…...

嵌入式杂记 -- MCU的大小端模式

MCU的大小端模式 大端模式小端模式大小端模式测试联合体概念MCU大小端模式测试大端模式测试小端模式测试 大小端模式转换 在进行MCU开发的时候&#xff0c;我们需要注意MCU的数据存储模式&#xff0c;在嵌入式中有两种不同的存储模式&#xff0c;分别是 大端模式和小端模式。 …...

对这套BI零售数据分析方案心动,是零售人天性

零售数据分析做了这么多年&#xff0c;难道真的没累积点经验&#xff0c;摸索出一条又快又能满足绝大多数需求的数据分析捷径&#xff1f;别人不知道&#xff0c;奥威BI还真就有这么一套标准化的BI零售数据分析方案&#xff0c;不管是服装零售、医药连锁、商超都能利用这套方案…...

vuekeyclock 集成

前端集成keycloak鉴权的主要写法&#xff0c; 在main.js里面写 import VueKeycloakJs from dsb-norge/vue-keycloak-js import { KeycloakInstance } from "keycloak-js";// 回调地址 const pageIndex process.env.NODE_ENV production ? http://xxxx/#/ : http:…...

ARM Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核

编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料&#xff08;如 百问网的《嵌入式Linux应用开发完全手册》&#xff0c;在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO&#xff1a;开发板资料》或《2.2 全系列Linux教程&#xf…...

通讯协议学习之路(实践部分):SPI开发实践

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 本文…...

【系统安装】ubuntu20.04启动盘制作,正经教程,小白安装教程,百分百成功安装

1.所需材料&#xff1a; 64GBU盘&#xff08;其实8g和16g也可以&#xff09; 2.制作U盘启动盘 使用windows制作ubuntu 20.04启动盘 1&#xff09;下载制作工具&#xff1a;Rufus&#xff1a;Rufus - 轻松创建 USB 启动盘 2&#xff09;插入用来做启动盘的U盘 3&#xff0…...

2023云计算发展趋势

目录 一、云计算是什么&#xff1f; 二、云计算发展趋势 三、总结 一、云计算是什么&#xff1f; 云计算是一种基于互联网的计算方式&#xff0c;通过网络连接的方式提供计算能力、存储服务、应用程序和数据资源。它通常通过虚拟化技术实现多个计算机资源的池化&#xff0c;…...

C# .NET Core API Controller以及辅助专案

准备工作 Windows 10Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)C#将方法封装(据说可以提高效率,就像是我们用的dll那种感觉新增专案作为我们API的辅助专案(作用类似dll&#xff0c;此处&#xff0c;你也可以在你自己的API专案里建文件夹&#xff0c;但…...

asp.net图书管理系统

asp.net图书管理系统 基本操作图书管理 读者管理 借书 修改资料 修改密码 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 图书管理 读者管理 借书 修改资料 修改…...

概念解析 | LoRA:低秩矩阵分解在神经网络微调中的作用

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:基于低秩矩阵分解的神经网络微调方法LoRA LoRA: Low-Rank Adaptation of Large Language Models LoRA由如下论文提出,详细信息请参见论文原文 https://arxiv.org/abs/2106.0968…...

前端---CSS的盒模型

文章目录 什么是盒模型&#xff1f;设置边框设置内边距设置外边距块级元素水平居中 什么是盒模型&#xff1f; 页面上的每个HTML元素都是一个一个的“盒子”&#xff0c;这些盒子由&#xff1a;内容、内边距、边框、外边距组成。 我们可以和住的房子联系起来&#xff0c;更好…...

Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开webcast.airdroid.com。这就是AirDroid Cast的网页版。你可以看到中间白色框框的右上角有个…...

云汇优想:抖音矩阵系统有哪些类型?

抖音作为中国最热门的短视频分享平台之一&#xff0c;不断推陈出新&#xff0c;在内容管理和展示方面也进行了创新。其中&#xff0c;抖音矩阵系统是一项重要的功能&#xff0c;它提供了多种类型的矩阵&#xff0c;帮助用户更好地管理和展示自己的内容。那么&#xff0c;抖音矩…...

XSS 漏洞的理解

谈一谈你对XSS 漏洞的理解 1.漏洞描述 跨站脚本攻击是一种Web安全漏洞。攻击者利用该漏洞&#xff0c;在网页中注入恶意代码&#xff0c;等待受害者访问被注入恶意代码的网页。网页中的恶意代码会被浏览器识别&#xff0c;并执行。恶意代码通常是Javascript脚本&#xff0c;由…...

cocosCreator 之内存管理和释放

版本&#xff1a; 3.4.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac 回顾 前面有两篇博客说明了&#xff1a; cocosCreator 之 resources动态加载、预加载 讲述了静态引用资源&#xff0c;动态加载和预加载相关cocosCreator 之 Bundle 讲述了AssetManager关于对内置…...

飞天使-template模版相关知识

遇到报错django.template.exceptions.TemplateSyntaxError: ‘staticfiles’ is not a registered tag library. Must ROOT_URLCONF TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)],APP_DIRS: True,OPTI…...

一、Hadoop3.1.3集群搭建

一、集群规划 hadoop01(209.2)hadoop02(209.3)hadoop03(209.4)HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager NameNode和SecondaryNameNode不要放在同一台服务器上 二、创建用户 useradd atguigu passwd *…...

QML16、从 C++ 定义 QML 类型

从 C++ 定义 QML 类型 当使用 C++ 代码扩展 QML 时,可以向 QML 类型系统注册 C++ 类,以使该类能够用作 QML 代码中的数据类型。 虽然任何 QObject 派生类的属性、方法和信号都可以从 QML 访问,如将 C++ 类型的属性暴露给 QML 中所讨论的,但在向类型系统注册之前,此类类不能…...

【中间件篇-Redis缓存数据库06】Redis主从复制/哨兵 高并发高可用

Redis高并发高可用 复制 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他机器&#xff0c;满足故障恢复和负载均衡等需求。Redis也是如此&#xff0c;它为我们提供了复制功能&#xff0c;实现了相同数据的多个Redis 副本。复制功能是高可用Re…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB,助力企业 AI 应用高效落地

NineData 的数据库 DevOps 解决方案已完成对百度智能云向量数据库 VectorDB 的全链路适配&#xff0c;成为国内首批提供 VectorDB 原生操作能力的服务商。此次合作聚焦 AI 开发核心场景&#xff0c;通过标准化 SQL 工作台与细粒度权限管控两大能力&#xff0c;助力企业安全高效…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...