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处理,否则会出现乱码。

原文地址:https://www.cnblogs.com/coodream2009/p/8422486.html

时间: 2024-10-16 14:47:00

excel中的数据导出为properties和map的方法的相关文章

使用OpenXml把Excel中的数据导出到DataSet中

public class OpenXmlHelper { /// <summary> /// 读取Excel数据到DataSet中,默认读取所有Sheet中的数据 /// </summary> /// <param name="filePath">Excel文件路径</param> /// <param name="sheetNames">Sheet名称列表,默认为null查询所有Sheet中的数据<

使用JDBC+POI把Excel中的数据导出到MySQL

POI是Apache的一套读MS文档的API,用它还是可以比较方便的读取Office文档的.目前支持Word,Excel,PowerPoint生成的文档,还有Visio和Publisher的. http://poi.apache.org/download.html 具体的用法可以查阅文档里面您的quickguide,我给出我自己的范例,从xls文件把数据导出到MySQL. 这里面我总是假定excel在第一个sheet并且第一行是字段名,能够自动从第一行读取字段名建立一个表然后导入数据. pack

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

Qt中将QTableView中的数据导出为Excel文件

如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中.类的名字叫“ExportExcelObject”.使用起来很简单: [cpp] view plaincopy // 1. declare an object // – fileName Excel 文件路径 // – sheetName Excel 工作表(sheet)名称 /

机房收费系统之vb中的MSFlexGrid控件中的数据导出为Excel的步骤

MSFlexGrid控件中的数据导出为Excel表格的方法有很多,我觉得它们都大同小异,总起来说就是vb先调用Excel,然后再将数据导入进去.在数据导出的过程中,我的收获如下,下面是我把MSFlexGrid控件的数据导出到Excel中的步骤. 1 首先确保 在工程中引用Microsoft Excel 14.0 Object Library   和  Microsoft ActiveX Data Objects 2.6 Libray 代码部分, <span style="font-size

c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导出当前页数据到Excel的 DataGridView命名为dataGridView1 1 //按下导出按钮 2 private void button7_Click(object sender, EventArgs e) 3 { 4 print(dataGridView1); 5 } 6 publi

Excel中的数据导入到SqlServer数据库中

从SqlServer2008才开始支持导出表结构的和表中的数据,而SqlServer2008以前的数据库只支持导出表结构,有些时候我们可能需要把2008以前的数据库中的数据导出来,这个时候我们可以使用折中的方法,先把数据库导出到Excel中,再把Excel中的数据导入到数据库中(如果两台数据库服务器之间可以互通的话,可以直接建立远程链接进行数据传输,不用如此麻烦), 将SqlServer中的数据导出到Excel中比较简单,这里不再贴图,下面是把Excel中的数据导入到SqlServer中步骤:

对比俩个Excel中的数据,并且进行数据操作

项目需要, 去对比俩个Excel中的数据是否一样, 不一样需要做替换, 有个同事在处理中(处理了一天 1000 多条吧,移交给我), 本人在想通过人工手动的方式,一个个做对比得花多长时间啊, 主要是数据量还很大,最主要的是, 我也不想干,不干没办法. 思考之后: 方案一:准备把Excel1 数据读取到,放在一个很大的List中, 然后在读Excel2, 之后做对比和替换. 注:所在的公司根本不知道,封装公共类库,公共方法, 谁用谁写那种模式. 方案二:把俩个excel中的数据全部导入到数据库中,

读取Excel中的数据到DataSet

读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs()    {        string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\data-for-source-apportionment\\PM-SO2-NOx-CO-O3-201311-20140324.xlsx