- ?
JavaScript入门写一个表单校验功能
仇冰旋
展开
那么今天咱们就来认识一下
JavaScript
什么是JavaScript?
JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言) 被用来向页面添加交互行为的~通常直接嵌入到HTML页面中,JavaScript是一种解释性语言。
Java和JavaScript的关系?
Java 和 JavaScript 名字这么像,相信有很多小伙伴都会有一点想法~Java和JavaScript是不是有什么关系~在这里给大家解释一下~Java和JavaScript的关系就像老婆和老婆饼的关系是一样的~
JavaScript的作用?
HTML是网站的骨架,CSS是用来给骨架进行美化的,JavaScript让整个页面具有动态的效果。所以这下你知道他们为什么又叫“前端三剑客”了吗?
JavaScript的语法规则
其实JavaScript的语法和Java很像,学完JavaSE之后再来学习JavaScript就会发现其实很简单的~
1)所有的变量使用var来定义、是弱类型变量,不代表没有类型、变量本身是有类型的。
2)每行结尾的分号可有可无,建议写上。
3)注释和Java相似,支持单行注释(//)多行注释()
在JavaScript中有5中原始数据类型有number、string、boolean、null和undefined,引用数据类型都是object对象~我们可以利用typeof()方法来查看数据类型
接下来咱们先来看看变量:
null和undefined的区别
null:对象不存在
undefined:对象存在,访问的属性或者方法不存在
想信很多对于基础的部分不是那么感兴趣那么咱们直接上干货吧~
利用js完成表单校验
首先来看一下js是如何获取元素的
document.getElementById("id名称");
利用js是获取元素的值
document.getElementById("name").value;
想要完成表单验证功能除了获取,我们还需要输出功能
警告框:alert();
上面的弹窗就是了,咱们就不演示了
向页面指定位置写入内容 innerHTML
向页面写入内容 document.write(" ");
下面咱们就可以动手做了我们的表单校验功能了
首先给咱们需要校验的元素设置id,然后给表单添加一个函数~(这个页面就是之前咱们编写的注册页面)
然后完善函数的逻辑
这样我们的表单验证就完成了
效果咱们就不演示了
源码都在截图上~
小伙伴们自己试试
我是萌新娜娜
立志做一个不翻车的老司机
学习Java的路上请多多指教
扩展阅读
前端面试之JavaScript(总结)
如何用JavaScript手动实现一个栈
JavaScript 开发人员需要知道的简写技巧
来源:Java联盟
文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除或授权事宜
- ?
JavaEE——Java导出Excel表
雷纳德
展开
声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。
Java导出Excel表
首先去maven里面下载 upload 1.3.3 版本 下载到你的maven工程里面
上传文件必须是post方法
上传文件同时有表单值的话 你用request.getParame是获得不到的
Java导出Excel表
去maven工厂下载 POI jar包
- ?
pandas如何将多个DataFrame写入同一个excel工作簿中
尹飞丹
展开
该号刚出生不久,喜欢的朋友别忘了点个关注。
日常的数据分析工作中,很多时候我们会通过excel的形式将分析结果展示给领导或同事。前面一些文章我们也简单提到过pandas与excel的i/o问题,今天我们再深入一步,如何将多个分析后的结果,也就是多个DataFrame,写入同一个excel工作簿中呢?
直奔主题。
先导入包,然后用字典构建一个测试用的DF:
然后让它繁衍一下,复制几个同样的DF出来待用:
之前说到过,用Python的pandas包把数据结构写入excel,主要用到的是pd.to_excel()。然而比较尴尬的是,这个方法缺少了一个类似pd.to_csv()中的mode参数,以至于你每次用诸如pd.to_excel(文件名)的形式去写入excel时,系统都会帮你重新创建一个新的文件。也就意味着前面的文件会被覆盖掉,你得到的只能是最后一个DF写入的结果文件。
那么,有其他的办法,让好几个DF写入到同一个excel文件中吗?
如果这样常见的问题都没法解决的话,人生苦短,我用Python也就白说这么多年了。我们可以通过创建一个ExcelWriter对象,来完美解决上面的问题。代码如下:
这个写入对象,会帮我们将DF写入到test1这个excel工作簿中。
接下来我们依次将之前创建和繁衍好的DF写入到df1到df4这四个工作表中,如下:
到这里,有的朋友发现问题了,为什么我运行完代码,还是没有看到创建的excel工作簿呢?实际上,上面那一步做完,数据还只是存在于缓存中,需要我们再运行下面一句代码,数据才能写入到硬盘中:
我们打开新鲜出炉的test1文件来检查一下,发现一共有四个工作表,表里头的数据也跟我们写入的相同,没有出现错误:
另外,如果想把这四个DF都写在同一个工作簿的同一个工作表里,又该怎么办呢?
熟悉pd.to_excel()朋友不难想到,可以利用startcol和startrow这两个参数来实现:
如上,我们重新创建一个writer2对象,在将DF写入到excel的时候,并没有传递sheet_name参数,这也就意味着所有的DF都会默认写入到Sheet1里头。
为了防止DF都写入到工作表同一地方以至于出现重合情况,我们可以设置DF在写入时的起始行和起始列。如df1没有传递除writer2以外的任何参数,则会默认从Sheet1的第一行第一列开始写入数据。df2指定startcol=8,意即该DF在写入到Sheet1中时,会从第一行第九列(不是第八列开始,不明白这块的同学可以去官网看看这个参数到底是什么意思,好好理解一下Python和excel起始数字的不同之处!!!)开始写入数据。同样的,df3会从第11行第1列开始写入数据,df4会从第11行第9列写入数据。
接着writer2.save()一下,数据写入到硬盘,我们来检查一下:
呈现出的结果跟我们的需求是一样的。当然,格式方面,还需要自己再稍微调整一下。
最后说一个旧闻,据说微软已经考虑要把Python接纳为excel的操作脚本语言之一了。或许在不久的将来,除了vba之外,你还可以直接在excel里用Python来做一些自动化的事情了。想想还挺美,期待一下吧。
- ?
不复制粘贴即可快速将Excel上一单元格的内容搬运过来!
Vesta
展开
在使用Excel表格过程中,我们经常会碰到在同一列中输入相同内容的情况。或者是我们在编辑已有的Excel文件时,需要写入同列中上一单元格中出现过的内容,你曾经是否为没有一个好的捷径方式处理类似问题而感到烦劳困惑!别担心,今天本教程就教大家几个小技巧,快速实现写入上单元格中出现过的内容,感兴趣的朋友,不妨看看下文。
1、生成临时下拉菜单法:教程以Excel2013为例,A列中前三行单元格都有内容,现在需要在第四行,即A4单元格中写入与A3单元格相同的内容。我们可以先选中A4单元格,然后按下键盘上的组合键Alt+↓(下方向箭头)即可生成临时的下拉菜单内容,并且这个下拉菜单的内容就是同列中出现过的内容(这些内容所在单元格是连续的,且与目标单元格相邻)。注:此技巧只对单元格中的文本起作用,如果是纯数字则无效。
2、乾坤大挪移:此技巧可以直接将目标单元格同列的上一单元格内容迅速写入目标单元格。教程以B2单元格快速写入B1单元格中的内容为例,首先选中B2单元格,然后按下键盘上的组合键Ctrl+‘(单/双引号键)即可快速将上一单元格中的内容搬下来。此技巧特别适合那种输入内容同上一单元格,且内容较长较多的情况。
如果对大家有点帮助的话,请大家帮忙点个赞或分享一下,您的支持是我不懈努力的动力,谢谢!(*O*)
- ?
java的写入时复制容器的例子以及该容器的优缺点
诗双
展开
写入时复制CopyOnWriteArrayList
CopyOnWriteArrayList使用了保护性复制的策略。
它并不是在遍历列表前进行复制,而是在列表被修改时进行,已经投入使用的迭代器会使用当时的旧副本。
使用了CopyOnWriteArrayList的好处
首先,使用了CopyOnWriteArrayList的代码会变得非常简洁。
其次,代码将变得更高效,只在listeners被更新时创建副本(更新listeners的概率相对较低)。
CopyOnWriteArrayList缺点
1.内存占有问题。
两个数组同时驻扎在内存中,占用内存会比较大,可以用ConcurrentHashMap来解决。
2.数据一致性。
CopyOnWriteArrayList容器只能保证数据的最终一致性,不能保证数据的实时一致性。
如果写入的的数据需要实时读到不能使用CopyOnWriteArrayList。
- ?
Java使用Apache POI导出Excel
Taltal
展开
一.POI简单介绍
Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能
HSSF 提供读写Microsoft Excel XLS格式档案的功能。
XSSF 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF 提供读写Microsoft Word DOC格式档案的功能。
HSLF 提供读写Microsoft PowerPoint格式档案的功能。
HDGF 提供读Microsoft Visio格式档案的功能。
HPBF 提供读Microsoft Publisher格式档案的功能。
HSMF 提供读Microsoft Outlook格式档案的功能。
二.操作步骤
1.环境配置:导入jar包
org.apache.poi poi 3.16
2.创建一个Excel工作簿
@Test public void test() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }
3.创建一个sheet页
@Test public void sheet() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 wb.createSheet("第一个sheet页"); wb.createSheet("第二个sheet页"); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }
sheet页
4.创建行和列
@Test public void row() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("学生信息sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell =null; for(int i = 0 ;i<5;i++){ row.createCell(i).setCellValue("写入信息:单元格内容"+i); } //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }
5.创建一个时间样式到Excel
@Test public void date() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("时间sheet页"); //创建一行 Row row = sheet.createRow(0); //创建一个单元格 Cell cell = row.createCell(0); cell.setCellValue(new Date()); CreationHelper creationHelper = wb.getCreationHelper(); //设置单元格样式 CellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss")); cell = row.createCell(1); cell.setCellValue(new Date()); //设置日期样式 cell.setCellStyle(cellStyle); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }
6.单元格对其方式及行高
@Test public void style() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(0); //设置行高 row.setHeightInPoints(30); //创建一个单元格 createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM); createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER); createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); } /** * 创建一个单元格设置对应的对其方式 * @param workbook 工作蒲 * @param row 行 * @param column 列 */ private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){ Cell cell = row.createCell(column);//创建单元格 cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值 CellStyle cellStyle = workbook.createCellStyle();//创建样式 cellStyle.setAlignment(halign);//设置单元格水平方向对其方式 cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式 cell.setCellStyle(cellStyle); }
合并单元格
@Test public void test1() throws IOException { //定义一个工作蒲 Workbook wb = new HSSFWorkbook(); //创建sheet页面 Sheet sheet = wb.createSheet("第一个sheet"); //创建一行 Row row = sheet.createRow(1); //设置行高 row.setHeightInPoints(30); //创建一个单元格 Cell cell = row.createCell(1); cell.setCellValue("合并单元格"); //合并单元格(起始行,结束行,起始列,结束列) sheet.addMergedRegion(new CellRangeAddress(1,2,1,2)); //定义一个输出流 FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls"); //写入在输出流 wb.write(fileOutputStream); //关闭输出流 fileOutputStream.close(); }
- ?
Java写入文件的四种方式,及其用法差异
潘斓
展开
魅惑的Java
java写入文件的方法,通常有四种,分别是用FileWrite、BufferedWriter、Files、FileOutPutStream的方法。我们先来简要说说四种方法的用法差异。
FileWriter适用于文件量少的写入,因为他是直接写入到文件的,不会进行缓存,也是最简单的方式。
BufferedWriter和FileWriter比较类似,但是,前者是利用了缓存区来写入,降低了IO的操作,提高了很多性能,适用于大数据量的操作。
FileOutPutStream 是介于前述两者之间的,根据文件量,可以自行切换。
Files则是Java7提供的文件类。
下面我们用代码分别实现四种方法,先来提供一组数据:
String data = "我是等待被写入文件的数据";
int NumOfLines = 10000;
1.使用FileOutPutStream方法:
2.使用Java7中提供的Files类写入:
3.使用BufferedWriter方法:
4.使用FileWriter方法:
最后呢,在强调一下,BufferedWriter适用于数据量比较多的情况,使用的是内部缓存区减低了IO的操作,节省时间 ;
FileWrite适用于数据量较少的情况。
每天进步一点点,每天消化一点点。如果文章对你有帮助,点个赞呗。
- ?
集算器协助java处理多样性数据源之Excel
剑成
展开
Java程序员读取和计算excel的程序一般要使用poi或其它开源包,这些开源包对编程的支持较为底层,整体学习成本和操作复杂度都很高。使用集算器辅助java处理excel文件就可以避免这些事务。
下面通过一个例子看一下具体作法:从Excel文件orders.xls中读取订单信息,找出2010年1月1日(含)之后,SELLERID等于18的订单。orders.xls的内容如下:
实现的思路是:用Java程序调用集算器脚本,读取和计算excel文件中的数据,之后将结果以ResultSet的方式返回给Java程序。由于集算器支持动态表达式解析和求值,使得Java程序可以像使用sql那样,灵活的处理数据。
首先,程序员可以将条件“2010年1月1日(含)之后,并且SELLERID等于18的订单。”作为参数where传递给esProc程序,如下图:
where是个字串,其值为:ORDERDATE>=date(2010,1,1) && SELLERID==18。
esProc的程序代码如下:
A2:按照条件过滤。这里使用宏来实现动态解析表达式,其中的where就是传入参数。集算器将先计算${…}里的表达式,将计算结果作为宏字符串值替换${…}之后解释执行。这个例子中最终执行的是:=A1.select(ORDERDATE>=date(2010,1,1) && SELLERID==18)。A1:定义一个file对象,导入excel数据。esProc的集成开发环境可以直观的显示出导入的数据,如上图右边部分。importxls函数也可以读写xlsx文件,它会根据文件扩展名自动判断excel的版本。
A3:将符合条件的结果集返回给java。如果需要将结果写入另外一个excel文件,只要将A3单元格改为:=file("D:/file/orders_result.xls").exportxls@t(A2)。
过滤条件发生变化时不用改变程序,只需改变where参数即可。例如,条件变为:2010年1月1日(含)之后,并且SELLERID等于18的订单,或者CLIENT等于PWQ的订单。Where的参数值可以写为:CLIENT=="PWQ"||ORDERDATE>=date(2010,1,1) && SELLERID==18。执行之后,A2中的结果集如下图:
在Java程序中使用esProc JDBC调用这段程序获得结果的代码如下:(将上述esProc程序保存为test.dfx):
//建立esProc jdbc连接
Class.forName("com.esproc.jdbc.InternalDriver");
con= DriverManager.getConnection("jdbc:esproc:local://");
//调用esProc程序(存储过程),其中test是dfx的文件名
com.esproc.jdbc.InternalCStatementst =(com.esproc.jdbc.InternalCStatement)con.prepareCall("call test(?)");
//设置参数
st.setObject(1,"ORDERDATE>=date(2010,1,1) && SELLERID==18 || CLIENT==\"PWQ\"");//执行esProc存储过程
ResultSet set =st.executeQuery();
对于代码较简单的脚本,还可以把代码直接写在调用集算器JDBC的Java程序中,而不必专门编写脚本文件(test.dfx):
ResultSet set = st.executeQuery(
"=file(\"D:/file/orders.xls\").importxls@t().select(ORDERDATE>=date(2010,1,1) && SELLERID==18 || CLIENT==\"PWQ\")");
这段Java代码直接调用了集算器的一句脚本:从Excel文件中取得数据,并按照指定的条件过滤。
- ?
一行代码完成Java的Excel读写
罗巧蕊
展开
前段时间在 github 上发现了阿里的 EasyExcel 项目,觉得挺不错的,就写了一个简单的方法封装,做到只用一个函数就完成 Excel 的导入或者导。刚好前段时间更新修复了一些 BUG,就把我的这个封装分享出来,请多多指教。
附上源码:
https://github/HowieYuan/easyexcel-method-encapsulation
EasyExcel
EasyExcel 的 github 地址:
https://github/alibaba/easyexcel
EasyExcel 的官方介绍:
可以看到 EasyExcel 最大的特点就是使用内存少,当然现在它的功能还比较简单,能够面对的复杂场景比较少,不过基本的读写完全可以满足。
一. 依赖
首先是添加该项目的依赖,目前的版本是 1.0.2。
com.alibaba easyexcel 1.0.2 二. 需要的类
1. ExcelUtil
工具类,可以直接调用该工具类的方法完成 Excel 的读或者写。
2. ExcelListener
监听类,可以根据需要与自己的情况,自定义处理获取到的数据,我这里只是简单地把数据添加到一个 List 里面。
publicclassExcelListenerextendsAnalysisEventListener {//自定义用于暂时存储data。//可以通过实例获取该值private List
3. ExcelWriterFactroy
用于导出多个 sheet 的 Excel,通过多次调用 write 方法写入多个 sheet。
4. ExcelException
捕获相关 Exception。
三. 读取 Excel
读取 Excel 时只需要调用 ExcelUtil.readExcel() 方法:
@RequestMapping(value = "readExcel", method = RequestMethod.POST)public Object readExcel(MultipartFile excel) {return ExcelUtil.readExcel(excel, new ImportInfo());}
其中 excel 是 MultipartFile 类型的文件对象,而 new ImportInfo() 是该 Excel 所映射的实体对象,需要继承 BaseRowModel 类,如:
publicclass ImportInfo extends BaseRowModel {@ExcelProperty(index = 0)privateString name;@ExcelProperty(index = 1)privateString age;@ExcelProperty(index = 2)privateString email;publicString getName() {return name; }publicvoid setName(String name) {this.name = name; }publicString getAge() {return age; }publicvoid setAge(String age) {this.age = age; }publicString getEmail() {return email; }publicvoid setEmail(String email) {this.email = email; }}
作为映射实体类,通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列,同时不可缺少 setter 方法。
四. 导出 Excel
1. 导出的 Excel 只拥有一个 sheet
只需要调用 ExcelUtil.writeExcelWithSheets() 方法:
@RequestMapping(value = "writeExcel", method = RequestMethod.GET)publicvoidwriteExcel(HttpServletResponse response) throws IOException { List
list = getList(); String fileName = "一个 Excel 文件"; String sheetName = "第一个 sheet"; ExcelUtil.writeExcel(response, list, fileName, sheetName, new ExportInfo()); } fileName,sheetName 分别是导出文件的文件名和 sheet 名,new ExportInfo() 为导出数据的映射实体对象,list 为导出数据。
对于映射实体类,可以根据需要通过 @ExcelProperty 注解自定义表头,当然同样需要继承 BaseRowModel 类,如:
publicclass ExportInfo extends BaseRowModel {@ExcelProperty(value = "姓名" ,index = 0)privateString name;@ExcelProperty(value = "年龄",index = 1)privateString age;@ExcelProperty(value = "邮箱",index = 2)privateString email;@ExcelProperty(value = "地址",index = 3)privateString address;}
value 为列名,index 为列的序号。
如果需要复杂一点,可以实现如下图的效果:
对应的实体类写法如下:
publicclass MultiLineHeadExcelModel extends BaseRowModel {@ExcelProperty(value = {"表头1","表头1","表头31"},index = 0)privateString p1;@ExcelProperty(value = {"表头1","表头1","表头32"},index = 1)privateString p2;@ExcelProperty(value = {"表头3","表头3","表头3"},index = 2)private int p3;@ExcelProperty(value = {"表头4","表头4","表头4"},index = 3)private long p4;@ExcelProperty(value = {"表头5","表头51","表头52"},index = 4)privateString p5;@ExcelProperty(value = {"表头6","表头61","表头611"},index = 5)privateString p6;@ExcelProperty(value = {"表头6","表头61","表头612"},index = 6)privateString p7;@ExcelProperty(value = {"表头6","表头62","表头621"},index = 7)privateString p8;@ExcelProperty(value = {"表头6","表头62","表头622"},index = 8)privateString p9;}
2. 导出的 Excel 拥有多个 sheet
调用 ExcelUtil.writeExcelWithSheets() 处理第一个 sheet,之后调用 write() 方法依次处理之后的 sheet,最后使用 finish() 方法结束。
publicvoidwriteExcelWithSheets(HttpServletResponse response) throws IOException { List
list = getList(); String fileName = "一个 Excel 文件"; String sheetName1 = "第一个 sheet"; String sheetName2 = "第二个 sheet"; String sheetName3 = "第三个 sheet"; ExcelUtil.writeExcelWithSheets(response, list, fileName, sheetName1, new ExportInfo()) .write(list, sheetName2, new ExportInfo()) .write(list, sheetName3, new ExportInfo()) .finish();} write 方法的参数为当前 sheet 的 list 数据,当前 sheet 名以及对应的映射类。
扩展阅读
代码整洁之道|最佳实践小结
Javascript 将 HTML 页面生成 PDF 并下载
Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
来源:https://juejin.im/post/5ba320546fb9a05d0b14304b
文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除
- ?
整理关于java写入内容到excel的例子供大家参考
沃伦
展开
1POI jar简介
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
2POI jar下载
poi下载地址:https://apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz
下载之后把压缩包解压,然后在项目里面引用解压文件夹里面的jar
3新建ReadExcelTest java project,引入poi相关jar
4创建一个WriteExcel java类,编写代码,写入excel里面
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class WriteExcel {
private static final String EXCEL_XLS = "xls";
private static final String EXCEL_XLSX = "xlsx";
@SuppressWarnings("rawtypes")
public static void writeExcel(List
String finalXlsxPath) {
OutputStream out = null;
try {
// 获取总列数
int columnNumCount = cloumnCount;
// 读取Excel文档
File finalXlsxFile = new File(finalXlsxPath);
Workbook workBook = getWorkbok(finalXlsxFile);
// sheet 对应一个工作页
Sheet sheet = workBook.getSheetAt(0);
/**
* 删除原有数据,除了属性列
*/
int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算
System.out.println("原始数据总行数,除属性列:" + rowNumber);
for (int i = 1; i <= rowNumber; i++) {
Row row = sheet.getRow(i);
sheet.removeRow(row);
}
// 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
out = new FileOutputStream(finalXlsxPath);
workBook.write(out);
* 往Excel中写新数据
for (int j = 0; j < dataList.size(); j++) {
// 创建一行:从第二行开始,跳过属性列
Row row = sheet.createRow(j + 1);
// 得到要插入的每一条记录
Map dataMap = dataList.get(j);
String name = dataMap.get("title_id").toString();
String address = dataMap.get("title_name").toString();
String phone = dataMap.get("title_name_en").toString();
for (int k = 0; k <= columnNumCount; k++) {
// 在一行内循环
Cell first = row.createCell(0);
first.setCellValue(name);
Cell second = row.createCell(1);
second.setCellValue(address);
Cell third = row.createCell(2);
third.setCellValue(phone);
// 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
} catch (IOException e) {
System.out.println("数据汇入成功");
* 判断Excel的版本,获取Workbook
*
* @param in
* @param filename
* @return
* @throws IOException
public static Workbook getWorkbok(File file) throws IOException {
Workbook wb = null;
FileInputStream in = new FileInputStream(file);
if (file.getName().endsWith(EXCEL_XLS)) { // Excel 2003
wb = new HSSFWorkbook(in);
} else if (file.getName().endsWith(EXCEL_XLSX)) { // Excel 2007/2010
wb = new XSSFWorkbook(in);
return wb;
* @param args
public static void main(String[] args) {
List
for(int k=0; k<100;k++){
Map
map = new HashMap (); map.put("title_id", "title_id"+k);
map.put("title_name", "title_name"+k);
map.put("title_name_en", "title_name_en"+k);
mapList.add(map);
writeExcel(mapList, mapList.size(), "D:/360bizhi/readExcel.xlsx");
5运行main进行测试,查看写入结果
写入结果和预期是一样的,说明写入成功
请大家多多关注我的头条号,谢谢大家
java向excel写入数据
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并