问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在excel如何用函数把地址中省份、城市、区县单独提取出来?

发布网友 发布时间:2022-04-22 20:36

我来回答

3个回答

懂视网 时间:2022-04-08 03:05

省份表和城市表中,都有北京,上海,重庆,天津这四个城市,所以要自己判断一下。


先看下效果图:

技术分享

我们将二进制的数据库文件放入工程的res/raw下面,如图所示:

技术分享


整个程序的主要功能,我都封装在了CityInfoDataSupport2这个类中。

package com.example.province;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;

public class CityInfoDataSupport2 {
	private static CityInfoDataSupport2 cityInfoDataSupport;
	public static final String PACKAGE_NAME = "com.example.province";
	/**
	 * 数据库在手机系统内存里的路径
	 */
	private static String DATABASE_PATH = "/data"
			+ Environment.getDataDirectory() + "/"+PACKAGE_NAME + "/databases/";
	/**
	 * 数据库的名称
	 */
	public static final String dbName = "mzk_db";
	private SQLiteDatabase mSDB;

	public static CityInfoDataSupport2 getInstance(Context context) {
		initDataBase(context);
		if (cityInfoDataSupport == null) {
			cityInfoDataSupport = new CityInfoDataSupport2();
		}
		return cityInfoDataSupport;

	}

	/**
	 * 初试化数据库
	 */
	private static void initDataBase(Context context) {
		boolean dbExist = checkDataBase();
		if (dbExist) {

		} else {
			// 如果不存在,则将raw里的数据存入手机sd卡
			copyDataBase(context);
		}
	}

	/**
	 * 复制数据库到手机指定文件夹下
	 * 
	 * @throws IOException
	 */
	private static void copyDataBase(Context context) {
		String databaseFilenames = DATABASE_PATH + dbName;
		File dir = new File(DATABASE_PATH);
		FileOutputStream os = null;
		InputStream is = null;
		// 判断文件夹是否存在,不存在就创建一个
		if (!dir.exists()) {
			dir.mkdirs();
		}
		try {
			// 得到数据库的输出流
			os = new FileOutputStream(databaseFilenames);
			// 得到数据文件的输入流
			is = context.getResources().openRawResource(R.raw.mzk_db);
			byte[] buffer = new byte[8192];
			int count = 0;
			while ((count = is.read(buffer)) != -1) {
				os.write(buffer, 0, count);
				os.flush();
			}
			// 之所以不在这里初始化,是因为这边是静态的方法,而mSDB并没有设置为静态的,也不推荐设为静态的
			// mSDB = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH +
			// dbName, null);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

	/**
	 * 判断数据库是否存在
	 * 
	 * @return
	 */
	private static boolean checkDataBase() {
		SQLiteDatabase checkDB = null;
		String databaseFilename = DATABASE_PATH + dbName;
		// 要自己加上try catch方法
		try {
			// 返回最新的数据库
			checkDB = SQLiteDatabase.openDatabase(databaseFilename, null,
					SQLiteDatabase.OPEN_READONLY);
		} catch (SQLiteException e) {
			// TODO: handle exception
		}

		if (checkDB != null) {
			checkDB.close();
		}
		// 如果checkDB为null,则没有数据库,返回false
		return checkDB == null ? false : true;
	}

	/**
	 * 查询所有省份的信息
	 * 
	 * @return 省份信息
	 */
	public ArrayList<City> queryProvince() {
		// 创建数据库
		mSDB = SQLiteDatabase
				.openOrCreateDatabase(DATABASE_PATH + dbName, null);
		ArrayList<City> list = new ArrayList<City>();
		String sql = "select * from fs_province";
		Cursor cursor = mSDB.rawQuery(sql, null);
		while (cursor.moveToNext()) {
			City city = new City();
			String id = cursor.getString(cursor.getColumnIndex("ProvinceID"));
			String name = cursor.getString(cursor
					.getColumnIndex("ProvinceName"));
			city.setName(name);
			city.setId(id);
			list.add(city);
		}
		if (cursor != null) {
			cursor.close();
		}
		return list;
	}

	/**
	 * 通过省份来查找城市
	 * 
	 * @param provinceId
	 *  省份的id
	 * @return 该省的所有城市
	 */
	public ArrayList<City> queryCityByProvince(String provinceId) {

		// 创建数据库
		mSDB = SQLiteDatabase
				.openOrCreateDatabase(DATABASE_PATH + dbName, null);
		ArrayList<City> list = new ArrayList<City>();
		String sql = "select * from fs_city where ProvinceID=" + provinceId;
		Cursor cursor = mSDB.rawQuery(sql, null);
		while (cursor.moveToNext()) {
			City city = new City();
			String id = cursor.getString(cursor.getColumnIndex("CityID"));
			String name = cursor.getString(cursor.getColumnIndex("CityName"));
			city.setName(name);
			city.setId(id);
			list.add(city);
		}
		if (cursor != null) {
			cursor.close();
		}
		return list;

	}

	/**
	 * 通过城市来查找县区
	 * 
	 * @param provinceId
	 *  省份的id
	 * @return 该省的所有城市
	 */
	public ArrayList<City> queryDistrictByCity(String cityId) {

		// 创建数据库
		mSDB = SQLiteDatabase
				.openOrCreateDatabase(DATABASE_PATH + dbName, null);
		ArrayList<City> list = new ArrayList<City>();
		String sql = "select * from fs_district where CityID=" + cityId;
		Cursor cursor = mSDB.rawQuery(sql, null);
		while (cursor.moveToNext()) {
			City city = new City();
			String id = cursor.getString(cursor.getColumnIndex("DistrictID"));
			String name = cursor.getString(cursor
					.getColumnIndex("DistrictName"));
			city.setName(name);
			city.setId(id);
			list.add(city);
		}
		if (cursor != null) {
			cursor.close();
		}
		return list;

	}

	public void closeDataBase() {
		if (mSDB != null) {
			mSDB.close();
		}
	}
}

这个类中,将程序中的数据库二进制文件复制到了手机系统内存中。代码中都有很详细的注释,我在这里就不多说了。


接下来就是各个Activity的内容了,都很简单,我就贴一个吧,之后我将上传整个程序。

package com.example.province;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

/**
 * 省份的名字,其中北京,上海,天津,重庆,香港,澳门这六个是特殊的例子
 * @author lgx
 *
 */
public class MainActivity extends Activity {

	ArrayList<City> province;
	ListView province_list;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		province_list = (ListView) findViewById(R.id.province_list);
		province = CityInfoDataSupport2.getInstance(this).queryProvince();
		TestAdapter adapter = new TestAdapter(this, province);
		province_list.setAdapter(adapter);
		province_list.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				String ProviceId = province.get(position).getId();
				String proviceName = province.get(position).getName();
				if (proviceName.equals("北京") || proviceName.equals("天津")
						|| proviceName.equals("上海") || proviceName.equals("重庆")) {
					Intent intent = new Intent(MainActivity.this,
							DistrictActivity.class);
					intent.putExtra("pcode", ProviceId);
					startActivity(intent);
				} else {
					Intent intent = new Intent(MainActivity.this,
							CityActivity.class);
					intent.putExtra("pcode", ProviceId);
					startActivity(intent);
				}

			}
		});
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		// CityInfoDataSupport.getInstance(this).close();
	}

}


项目下载地址:http://download.csdn.net/detail/harryweasley/8807143


通过数据库获取省份城市区县的名字

标签:省份   城市   sqlite   数据库   

热心网友 时间:2022-04-08 00:13

1、提取省份用left函数

left函数的语法结构是LEFT(text, num_chars)

其中text表示我们要截取的那个内容,num_chars表示要截取多少内容。

2、提取城市用mid函数

MID字符串函数,作用是从一个字符串中截取出指定数量的字符
MID(text, start_num, num_chars)
text被截取的字符
start_num从左起第几位开始截取(用数字表达)
num_chars从左起向右截取的长度是多少(用数字表达)

3、提取区县用right函数

right函数,从字符串右侧首字符开始,从右向左提取指定的字符,其功能和LEFT函数完全一样,只是方向不同,从一个文本字符串的最后一个字符开始,截取指定数目的字符。

Excel表格中如需要从一段文字内容中提取某一长度的内容

热心网友 时间:2022-04-08 01:31

用LEFE函数加辅助列可以实现!具体操作如下!以一行为例,假定地址在C2单元格!省在D2…… F2为辅助列,公式:
省=LEFT(D2,MIN(FIND({"省","市","区"},D2&"省市区")))
F 2辅助列:=SUBSTITUTE(D2,A2,"")
市:=LEFT(F2,MIN(FIND({"市","区","县"},F2&"市区县")))
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
郎酒怎么分辨真假 郎酒买到假的怎么赔偿 如何除掉衣服上的超能胶迹 有什么方法洗掉"502超能胶水"??? 我想买块两三千元的玉,但又不知是否真假.不知玉器鉴别是怎样鉴的? 申请留学时间流程 95595光大银行,光大乐迷联名信用卡金卡额度多少 光大乐视卡是什么信用卡? 乐迷信用卡普卡额度大概是多少? ...sport的英语小作文,主题“打乒乓球”。初中水平 ps怎么画方框(ps怎么画方框线条) 如何在excel里面实现,A单元格下拉菜单选择省的名称,B单元格下拉菜单选择该省相应的城市名称?_百度问一问 Excel表中有详细收货信息,如何只提取出省和市? excel如何提取省份? Excel表格如何提取地址中的省份市县? 在windows 7 系统中怎样设置电脑颜色保护眼睛? 怎样将电脑的界面调颜色调出比较护眼的浅绿色?三种颜色的比例是多少啊... 电脑屏幕如何设置能起到保护视力的效果? 电脑保护眼睛颜色设置 如何设置电脑颜色保护眼睛? 怎样设置保护视力的电脑屏幕颜色? 想保护眼睛,如何设置电脑屏幕颜色? excel图表怎么制作? 如何将电脑设成保护眼睛的颜色 保护眼睛设置电脑设置颜色 家里有三个无线路由器,如何全屋wifi覆盖? 如何让家里3层楼的wifi信号稳定全覆盖 如何让3层楼大概350平方wifi稳定信号全覆盖 我自己开了一个小旅社,一共三层楼。每层楼六个房间。我想让wifi覆盖这三层楼。要怎么弄?要多大的光纤 3层别墅还有地下室,如何做到网络和WiFi全覆盖? 家里三层民房,怎么让二楼大厅的wifi覆盖一楼三楼? EXCEL中一排地址(有省份名称),按省份如何筛选 怎样在EXCEL表中使用公式提取省市名 excel中如何做全国省份和城市的下拉列表 关于EXCEL的问题 知道一个人的具体地址,我想把省、市、区单独分出来,有没有简便方法? 如何在EXCEL表格提取地址中的城市名称 Excel制作全国(省份,城市,县区)下拉选择列表,只做出了省份的选择列表,相对应的城市列表就不会了 怎样在excel中把身份证地址里的省市提取出来? Excel 怎么从地址信息里提取省份,城市,县 EXCEl如何用函数公式把城市客户自动匹配省份 在excel表格里有详细地址,怎么提取里面的省和市? 如何在EXCEL中做到国,省,市的下拉性选择 怎样在EXCEL中将身份证地址中的省、市、县提取出来? 如何通过excel让一个城市列表根据现有的对照表自动匹配省份和划分区域?如何运用excel函数公式? 红米10x5gmiui11开发版哪个版本续航最好 2021年追求性价比,红米10x5g还值得购买吗? 红米10x5g版宽度多少? 红米10x5g什么时候发布的? 红米10x5g后盖怎么打开 红米10X5g手机6GB十128G多少钱? 红米note9 5G和红米10X 5G哪个好,除了天玑820与800,还有其它哪些区别吗?