excel中的数据导出为properties和map的方法
在做项目的过程中,经常需要处理excel数据,特别是和业务人员配合时,业务人员喜欢使用excel处理一些数据,然后交给我们技术人员进行程序处理。利用POI读取写入excel数据,是经常使用的一个情景。本文介绍的是另外一种情景,是把excel表中的数据作为配置文件,也就是数据是键值对的情景。这种数据可以在java程序中保存为properties文件或者保存到Map中,然后在程序中使用这些数据。
1 数据在excel中的处理
键值对类型的数据在excel中,键和值各占一列,比如键在A列,对应的值在B列。我们可以把C列第一行的数据设置为‘=CONCATENATE(B1,"=",C1)’,比如键为username,值为zhangsan,则C列第一行显示的数据就是username=zhangsan,C列其他数据可以直接拷贝第一行数据得到。都是左边是键,右边是值,中间是等号的数据。C列的数据就是我们得到键值对数据。
2 properties文件的读取
在java程序中,新建一个properties文件(以properties为后缀的文件),然后直接将excel中的C列数据copy到properties文件中即可。这样就得到了properties配置文件。
Properties文件的读取。主要利用Properties类的方法。
Properties dbcfgProp=new Properties();
//Properties2Map是程序所在类的名称
Properties2Map properties2Map=new Properties2Map();
InputStream is=properties2Map.getClass().getResourceAsStream("/dbconfig.properties");
dbcfgProp.load(is);
//得到username对应的值
System.out.println(dbcfgProp.getProperty("username"));
3 properties数据存入map中
将properties文件的key存到map中的key,对应的value存入map中的value。具体程序如下。
Enumeration propertyNames = dbcfgProp.propertyNames();
while(propertyNames.hasMoreElements()){
String key=propertyNames.nextElement().toString();
String value=dbcfgProp.getProperty(key);
dbcfgMap.put(key,value);
}
4 完整的程序
public class Properties2Map {
public static void main(String[] args) {
Properties2Map properties2Map=new Properties2Map();
Properties dbcfgPro = new Properties();
InputStream dbcfg_in = properties2Map.getClass().getResourceAsStream("/dbcfg.properties");
BufferedReader bf = new BufferedReader(new InputStreamReader(dbcfg_in));
Map<String, String> dbcfgMap=new HashMap<>();
try {
dbcfgPro.load(bf);
Enumeration propertyNames = dbcfgPro.propertyNames();
while(propertyNames.hasMoreElements()){
String key=propertyNames.nextElement().toString();
String value=dbcfgPro.getProperty(key);
dbcfgMap.put(key,value);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//打印出来与excel比对
for (String key : dbcfgMap.keySet()) {
System.out.println(key+"="+dbcfgMap.get(key));
}
}
}
5 注意的问题。
在整个处理过程中,主要的碰到的问题是properties文件的中文乱码问题。一般我们的字符编码都使用UTF-8,可以设置properties文件的编码为UTF-8。在eclipse中,依次选择windows--Preferences--General--Content Types,在右侧选择Text--Java Properties File,然后在编码方式中填写UTF-8,点击UPDATE,然后确定。这样就设置了properties的编码方式。
再一个就是
BufferedReader
bf = new BufferedReader(new InputStreamReader(dbcfg_in));
利用BufferedReader对InputStream进行一次读取,BufferedReader是读取字符串的类,能够避免乱码问题。
在处理过程中还碰到一个文件,就是excel数据copy到properties文件中后,有文件的直接把中文转变为ASCII码,有的就没有转换,具体原因也不是太了解。对于转换为ASCII码的,可以不用BufferedReader处理,也不会出现乱码,但是没有转换的,必须加上BufferedReader处理,否则会出现乱码。
excel中的数据导出为properties和map的方法的更多相关文章
- 使用OpenXml把Excel中的数据导出到DataSet中
public class OpenXmlHelper { /// <summary> /// 读取Excel数据到DataSet中,默认读取所有Sheet中的数据 /// </sum ...
- 使用JDBC+POI把Excel中的数据导出到MySQL
POI是Apache的一套读MS文档的API,用它还是可以比较方便的读取Office文档的.目前支持Word,Excel,PowerPoint生成的文档,还有Visio和Publisher的. htt ...
- 2019-03-20 用SSIS把Excel中的数据导出来保存到SQLServer中
Control Flow 1.配置 好 图形 2.去变量那 配置好 文件路径 和 存储过程 3.在SQL Server创建对应的存储过程,该存储过程的功能是每次导入是清空原有的数据 4.如果不懂的参考 ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...
- 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel
机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- 将Datagridview中的数据导出至Excel中
首先添加一个模块ImportToExcel,并添加引用 然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...
- WPF-将DataGrid控件中的数据导出到Excel
原文:WPF-将DataGrid控件中的数据导出到Excel 导出至Excel是非常常见,我们可以用很多类库,例如Aspose.NOPI.Interop,在这里我们使用微软自家的工具.我的WPF绑定的 ...
随机推荐
- Friday for Oldboy
计算机的硬件介绍 1. CPU的工作流程:取指令->解码->执行 . 程序状态字寄存器(Program Status Word,PSW)中有一个二进制位控制这两种模式. 内核态:当cp ...
- 大数据Hadoop学习之搭建hadoop平台(2.2)
关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分布式环境,如需要,请参看:大数据Hadoop学习之搭建had ...
- c语言基础学习04
=============================================================================涉及到的知识点有:程序的三种结构.条件分支语句 ...
- SpringMVC框架学习笔记(1)——HelloWorld
搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4 ...
- Cxf -wsdl2java 使用参数介绍
wsdl2java -h 可以得到详细的参考文档: G:\cxf\apache-cxf-3.1.6\bin>wsdl2java -h wsdl2java -fe|-frontend <fr ...
- jdbc、Mybatis插入数据主键回显的实现方法
插入数据的时候,往往需要获取主键值.但是有时候主键是自增长的那么,就不太适用手动添加主键值了,此时需要一种可以回显主键参数的方法, 下面以jdbc.mybatis的实现举例 此时使用的是jdbc的话或 ...
- Web前端:改变鼠标样式
<span style="cursor:auto">浏览器设置的光标</span><br /> <span style="cur ...
- Java | 原来 try 还可以这样用啊?!
本文首发于 http://youngzy.com/ 习惯了这样的try: try { } catch (Exception e) { } 看到了这样的try,觉得有点神奇: try(...) { } ...
- 动态查询:getBy字段名
http://www.php.cn/php/php-getBy.html 根据字段名动态查询:getBy字段名( ) 该方法很有意思,手册的说得很简略,我们根据源码来好好说道说道~~ 1. 功能:根据 ...
- Hadoop问题:chmod 0700 of directory /var/lib/apt/lists/
问题描述: apt-get update W: chmod of directory /: Operation not permitted) E: Could not open : Permissio ...