形碼可以標(biāo)出物品的生產(chǎn)國、制造廠家、商品名稱、生產(chǎn)日期、圖書分類號(hào)、郵件起止地點(diǎn)、類別、日期等許多信息,因而在商品流通、圖書管理、郵政管理、銀行系統(tǒng)等許多領(lǐng)域都得到廣泛的應(yīng)用。
那么如何在Excel中快速生成條形碼呢?我們以前看到的方法有:
用Excel中的控件生成
借助文本文件生成
借且VBA代碼生成
.....
其實(shí)都太麻煩,可以更簡(jiǎn)單。
看下面Excel中的操作,輸入數(shù)字就條形碼已自動(dòng)生成:
原來是安裝了一種 條形碼字體,就是靠它直接轉(zhuǎn)換的:
字體安裝的方法也很簡(jiǎn)單:
1、從網(wǎng)上下載相關(guān)的條形碼字體
下載地址:http://font.chinaz.com/tiaoxingmaziti.html
(另: 條件碼有很多格式,都對(duì)應(yīng)有字體文件,本文下載的是code128.ttf 格式)
2、安裝字體
把下載的字體文件復(fù)制粘貼到C:\Windows\Fonts 文件夾中即可。(文件格式為 ttf )
安裝完成后,在打開Excel中的字體列表中,也可以看到條形碼字體了
其實(shí)今天還要掌握字體的安裝方法,如果你Excel中需要什么特殊字體,先去網(wǎng)上下載字體文件,然后復(fù)制粘貼到C:\Windows\Fonts 文件夾中即可。這個(gè)技巧多數(shù)用戶還不知道,快分享出去吧。
維碼又稱QR Code,是一個(gè)近幾年來移動(dòng)設(shè)備上很流行的一種編碼方式它比傳統(tǒng)的一維碼(條形碼)能存更多的信息,也能表示更多的數(shù)據(jù)類型。按照一定規(guī)律排列組成的幾何圖形構(gòu)成,它巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念
人們的生活方方面面都離不開二維碼,而且她也給人們帶來了極大的便利。
<br><br> (二維碼自動(dòng)識(shí)別)
二維碼有哪些優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
缺點(diǎn):
下面進(jìn)入正題,如何用js生成二維碼,
QRCode.js 是一個(gè)用于生成二維碼的 JavaScript 庫。主要是通過獲取 DOM 的標(biāo)簽,再通過 HTML5 Canvas 繪制而成,不依賴任何庫??梢钥焖俚脑趙eb頁面中繪制出二維碼。
通過獲取 DOM 的標(biāo)簽,再通過 HTML5 Canvas 繪制而成,不依賴任何庫
引入相應(yīng)js文件 :
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>`
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
在html中設(shè)置頁面容器。用來承載生成之后的二維碼顯示
調(diào)用:
$(網(wǎng)頁容器).qrcode({寬度:值,高度:值,內(nèi)容:值});
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="jquery-1.8.3.js"></script>
<script src="jquery.qrcode.min.js"></script>
<title></title>
</head>
<script>
function demo(){
// $(網(wǎng)頁容器).qrcode({寬度:值,高度:值,內(nèi)容:值});
$("#code").qrcode({wihth:150,height:200,text:"HellowWord"});
}
</script>
<body>
<div id="code"></div>
<button onclick="demo()">點(diǎn)我生成</button>
</body>
</html>
注意:
但是有可能中文會(huì)出現(xiàn)亂碼
編寫方法轉(zhuǎn)換中文內(nèi)容,接收參數(shù)判斷當(dāng)前數(shù)據(jù)的Unicode
function utf16to8(str) {
var out, i, len, c;
out = ""; //創(chuàng)建空變量保存結(jié)果
len = str.length; //設(shè)置傳入形參數(shù)據(jù)長度
for(i = 0; i < len; i++) {
c = str.charCodeAt(i); //返回字符串第一個(gè)字符的 Unicode 編碼:
if ((c >= 0x0001) && (c <= 0x007F)) { //判斷Unicode 編碼范圍
out += str.charAt(i);
} else if (c > 0x07FF) {
//將 Unicode 編碼轉(zhuǎn)為一個(gè)字符
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
//將 Unicode 編碼轉(zhuǎn)為一個(gè)字符
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
//返回出結(jié)果
return out;
}
最終在使用時(shí)調(diào)用當(dāng)前方法進(jìn)行中文轉(zhuǎn)換
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="jquery-1.8.3.js"></script>
<script src="jquery.qrcode.min.js"></script>
<script src="handler-chinese.js"></script>
<title></title>
</head>
<style>
#demodiv{
text-align: center;
}
#demodiv>input{
outline: none;
border: 1px red solid;
width: 300px;
height: 50px;
font-size: 30px;
padding-left: 10px;
}
</style>
<script>
function demo(){
//獲取輸入框結(jié)果
var text=$("#demodiv>input").val();
//調(diào)用裝換方法
var newText=utf16to8(text)
//設(shè)置范圍大小并且設(shè)置生成二維碼內(nèi)容
$("#code").qrcode({wihth:150,height:200,text:newText});
}
</script>
<body>
<div id="demodiv" >
<h1>QRCode生成二維碼</h1>
<input type="text"/>
<!--調(diào)用轉(zhuǎn)換方法-->
<button onclick="demo()">點(diǎn)我生成</button>
</div>
<div id="code"></div>
</body>
</html>
IE6?10,Chrome,F(xiàn)irefox,Safari,Opera,Mobile Safari,Android,Windows Mobile,ETC。
QRCode.js 是用于制作 QRCode 的JavaScript庫。QRCode.js 通過 HTML5 Canvas 和DOM中的表格標(biāo)簽支持跨瀏覽器。QRCode.js 沒有依賴關(guān)系。通過 QECode.js 可以非常方便的在web 頁面中使用二維碼。讓我們?cè)趹?yīng)用中便捷的使用,擴(kuò)展了項(xiàng)目的適用范圍。讓用戶可以快捷的訪問相關(guān)資源。提升項(xiàng)目的用戶體驗(yàn),使我們的應(yīng)用更加符合當(dāng)下用戶的適用習(xí)慣,增加用戶的黏性。
開始之前先給各位上個(gè)運(yùn)行效果圖
二維碼QRcode全稱Quick Response Code
通過在一個(gè)矩形區(qū)域內(nèi)使用黑白像素來進(jìn)行編碼
高糾錯(cuò)性、高可用性、高識(shí)別性
四周面有3個(gè)大的方框和一個(gè)小的方框,用于二維碼的定位。通過識(shí)別這幾個(gè)標(biāo)識(shí)位來定位二維碼,并對(duì)它進(jìn)行解析。二維碼的快速發(fā)展得益以智能手機(jī)的快速發(fā)展,常別用在數(shù)據(jù)分享和手機(jī)收款、付款
更多內(nèi)容參考360百科http://baike.so.com/doc/6326261-6539869.html
比較有名的二維碼第三方庫ZXing (谷歌所開源的二維碼掃描庫,用于在Android、javaSE)
Zxing是谷歌開放源碼的,用Java實(shí)現(xiàn)的多種格式的1d、2d條碼圖像處理,它包含聯(lián)系到其他語言的端口
ZXing可以實(shí)現(xiàn)使用手機(jī)的內(nèi)置的攝像頭完成條形碼掃描和解碼
https://github.com/ThePacific/zxing-barcode
由于谷歌的ZXing開源庫功能過于強(qiáng)大,而且比較難以快捷集成到我們的項(xiàng)目中,我在此提供一個(gè)ZXing經(jīng)過處理的第三方開源庫,放在360網(wǎng)盤供大伙下載希望對(duì)各位朋友會(huì)有所幫助
下載地址:https://yunpan.cn/cPaUIBZE3Npiy 訪問密碼 b316
網(wǎng)絡(luò)可以生成二維碼的網(wǎng)站很多如“草料二維碼” http://cli.im/
360瀏覽器的地址欄也有自帶二維碼
Firefox瀏覽器的地址欄也有自帶二維碼
在android studio 中創(chuàng)建一個(gè)自己的新工程或在現(xiàn)有的項(xiàng)目中應(yīng)用: czgLearnAndroidDemo
引入第三庫的詳細(xì)步驟我再“Android Studio 使用百度移動(dòng)生態(tài)SDK(廣告聯(lián)盟)”博文中很詳細(xì)的圖文說明,如不熟悉可查看該博文。
第一步:需要引入
libzxing工程
選擇菜單:File/new/import module
第二步:將libzxing工程引入到項(xiàng)目中
右鍵項(xiàng)目選擇菜單open module settings
選擇app/ dependencies/+加號(hào)/Module dependencies,把libzxing選擇并添加進(jìn)去
注意:引入后我們不需要手工添加CAMERA、VIBRATE的權(quán)限,因?yàn)槲覀円氲膌ibzxing模塊的AndroidManifest.xml中已經(jīng)幫我們添加好需要的權(quán)限。
第三步:在工程中創(chuàng)建XZingMainActivity(Activity)
activity_zxing_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".XZingMainActivity">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="掃描二維碼"
android:id="@+id/btn_scan"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="scan" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="---顯示掃描結(jié)果----"
android:textSize="22dp"
android:id="@+id/tv_ScanResult" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_Text"
android:hint="這里請(qǐng)輸入你要生成二維碼的內(nèi)容" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="二維碼是否要包含圖片Logo"
android:id="@+id/cb_includeLogo"
android:checked="false" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="生成二維碼QRcode"
android:id="@+id/btn_CreateQRcode"
android:onClick="CreateQRode" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imgv_QRcode"
android:layout_gravity="center_horizontal"
android:background="@drawable/appicon" />
</LinearLayout>
package czg.czgxzing;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.hardware.camera2.CaptureRequest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.xys.libzxing.zxing.activity.CaptureActivity;
import com.xys.libzxing.zxing.encoding.EncodingUtils;
public class XZingMainActivity extends AppCompatActivity {
private TextView tv_ScanResult;
private EditText et_Text;
private ImageView imgv_QRcode;
private CheckBox cb_includeLogo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zxing_main);
tv_ScanResult= (TextView) findViewById(R.id.tv_ScanResult);
et_Text= (EditText) findViewById(R.id.et_Text);
imgv_QRcode= (ImageView) findViewById(R.id.imgv_QRcode);
cb_includeLogo= (CheckBox) findViewById(R.id.cb_includeLogo);
}
//直接調(diào)用第三方ZXing庫的api進(jìn)行掃描
public void scan(View view){
startActivityForResult(new Intent(XZingMainActivity.this,
CaptureActivity.class),0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
Bundle bundle=data.getExtras();//通過Bundle獲取掃描后的結(jié)果數(shù)據(jù)
String sResult=bundle.getString("result");
tv_ScanResult.setText(sResult);
System.out.println("查看讀取值"+sResult);
}
}
public void CreateQRode(View view){
String sInput=et_Text.getText().toString();
if (sInput.equals("")){
Toast.makeText(XZingMainActivity.this,"還沒輸入要生成的二維碼,請(qǐng)輸入要生成二維碼的內(nèi)容",Toast.LENGTH_SHORT).show();
}else{
if (cb_includeLogo.isChecked()==false){
//調(diào)用ZXing類庫的createQRCode生成二維碼----不包含圖片
Bitmap bitmap= EncodingUtils.createQRCode(sInput,500,500,null);
imgv_QRcode.setImageBitmap(bitmap);
}else{
//調(diào)用ZXing類庫的createQRCode生成二維碼----包含圖片
Bitmap bitmap= EncodingUtils.createQRCode(sInput,500,500,
BitmapFactory.decodeResource(getResources(),R.drawable.appicon));
imgv_QRcode.setImageBitmap(bitmap);
}
}
}
}
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。