javascript读取excel表格实现简单的药品临期管理

       下载地址:javascript读取excel文件实现简单的药品临期和过期提醒资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/zzwwyy2023/89474572

        前篇主要介绍了用EXCEL表格公式计算日期来实现药品的临期和过期提醒。此篇主要是通过javascript读取EXCEL表格,显示在网页上面,并实现分类查看、模糊搜索功能,使用起来更为直观方便。

        读取EXCEL文件使用jQuery前端excel导入插件:xlsx.core.js。

        临期和过期使用javascript进行计算,没有读取EXCEL文件里的结果,但结果一致。

        界面如下图:

2133b3dfc70148c59b93ed77bf0a092d.png

        因为javascript的安全机制,必须手动点击左上角的EXCEL按钮,选择对应的EXCEL表格文件才能正确显示。本文附全部代码和EXCEL文件,可以在PC端各个常见平台运行,如果使用手机显示,可以用QQ浏览器打开手机本地html文件,即可运行。

        下面是html代码:

<!DOCTYPE html> 
<html lang="zh-cn"> 
<head> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<title></title>
<link href="css/css.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/xlsx.core.min.js"></script>  
<script type="text/javascript" src="js/readExcel.js"></script>
</head> 
<body> 
	<div  class="menu">
		<ul>
			<li>
				<input type="file" id="file" style="display:none;" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/> 
				<a href="javascript:selectFile()">EXCEL</a>
			</li>
			<li>
				<a>选择</a>
				<select id="selector">
					<option value='all'>全部</a>
					<option value='1'>临期</a>
					<option value='2'>过期</a>
				</select>
			</li>			
			<li>
				<a>模糊搜索</a><input type="text" id="search" placeholder="药品名称" />
			</li>			
		</ul>	
	</div>
	<div id="result"></div>
	<div id="container" class="text"></div>
</body> 
</html> 

        下面是css代码:

*
{
	margin: 0;
	padding: 0;
	box-sizing: border-box; 
}
body { 
	padding: 0px; 
	margin: 0px; 
} 
 table { 
	width:100%;
	border-collapse: collapse; 
} 
 th, td { 
 border: solid 1px #000000; 
 padding: 2px 2px; 
} 
td{
	font-size: 12px;
	text-align: center; /* 水平居中 */
	vertical-align: middle; /* 垂直居中 */
}

.text
{
	width:100%;
	padding:30px;
	overflow-x:auto;
	line-height:28px;		
}
.text table{
	 white-space: nowrap; 
}
.text ul
 {
	list-style-position: inside;
	list-style-type: square;
}
.text li {/*  text-indent: 15px; */ } 


.menu
{  
  width: 100%;
  height: 50px; 
  background: #333333;  
 }
.menu ul li
{
  height:50px;
  line-height:50px;
  list-style: none;
  display: inline-block;
}
.menu input, .menu select, .menu a{
	padding:0 20px;
	height:46px;
	line-height:46px;
	display: inline-block;
	background-color: #333333;	
	border: none;
	border-radius: 0px;
	font-size: 16px;
	color: #FFFFFF;
	text-decoration: none;
	text-align: left;
}

        下面是javascript:

var workSheet = [];

$(function() {	 
	//监听文件选择器
	 document.getElementById('file').addEventListener('change', function(e) { 
		 var files = e.target.files; 
		 if(files.length == 0) return; 
		 var f = files[0]; 
		 if(!/\.xlsx$/g.test(f.name)) { 
			alert('仅支持读取xlsx格式!'); 
			return; 
		} 
		readWorkbookFromLocalFile(f, function(workbook) {			
			readWorkbook(workbook); 
		}); 
	 }); 
	 //监听下拉列表
	$("#selector").change(function() {		
		show(workSheet[0],$("#selector option:selected").val());
	});
	//键入搜索关键字
	$('#search').on('input', function() {		
		show(workSheet[0],$("#search").val());
	});	
 }); 
 
function readWorkbookFromLocalFile(file, callback) { 	
	var reader = new FileReader(); 
	reader.onload = function(e) { 
		var data = e.target.result; 
		var workbook = XLSX.read(data, {type: 'binary'}); 
		if(callback) callback(workbook); 
	}; 
	reader.readAsBinaryString(file); 
}  

function readWorkbook(workbook) {
	//工作表名称集合 
	var sheetNames = workbook.SheetNames;	
	sheetNames.forEach(function(sheetName,id){
		var sheetData = workbook.Sheets[sheetName];
		var csv = XLSX.utils.sheet_to_csv(sheetData);		
		workSheet[id] = csv.split('\n');
		//从CSV转换过来的数组最后有1个空元素	
		workSheet[id].pop(); 
		workSheet[id] = clearRecord(workSheet[id]);
	});	
	show(workSheet[0],'all');
}

function show(ws, filter){
	var html = '<table>';
	ws.forEach(function(row, idx) {	
		var cells = row.split(',');		
		if(handle(cells,filter)){			
			html += '<tr>';
			cells.forEach(function(cell,id){				
				html+= '<td>' +cell +'</td>';				
			});
			html += '</tr>';				
		}		
	});
	html += '</table>';
	$('#container').html(html);
}

function clearRecord(originalRecord){
	if ($.isEmptyObject(originalRecord) ){
		return originalRecord;	
	}  
	//如果最后一行全部是逗号就删掉	
	while (new RegExp("^[\s ,]+$").test( $.trim(originalRecord[originalRecord.length -1]))) {
		originalRecord.pop();		
	}
	//如果最后一行是空的就删掉
	while ($.trim(originalRecord[originalRecord.length -1]).length <1) {
		originalRecord.pop();
	}	
	var columns= originalRecord[originalRecord.length -1].split(',')
	//如果最后一行全部是逗号就删掉
	while ($.trim(columns[0]).length<1) {		
		originalRecord.pop();
		columns= originalRecord[originalRecord.length -1].split(',')
	}	
	return originalRecord;
}
function handle(cells,filter){
	if((filter == 'all')||(cells[0] == '药品名称')){
		return true;
	}else if(filter == '1'){				
		var currentDate = new Date(); // 当前日期
		currentDate.setMonth(currentDate.getMonth() + 6); // 增加6个月
		var newDate = currentDate.toLocaleDateString(); // 格式化日期		
		if( new Date(Date.parse(newDate.replace("-", "/"))) >= new Date(Date.parse(cells[3].replace("-", "/")))){
			return true;
		}else{
			return false;
		}			
	}else if(filter == '2'){
		var currentDate = new Date(); // 当前日期		
		var newDate = currentDate.toLocaleDateString(); // 格式化日期		
		if( new Date(Date.parse(newDate.replace("-", "/"))) >= new Date(Date.parse(cells[3].replace("-", "/")))){
			return true;
		}else{
			return false;
		}	
	}else{
		if(cells[0].includes(filter)){
			return true;
		}
	}
}
function selectFile() { 
	document.getElementById('file').click(); 
}

     

  • 23
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript可以使用一些库和工具来读取Excel表格数据。其中最常用的是使用`SheetJS`库,它可以帮助我们读取和处理Excel文件。 首先,我们需要引入`SheetJS`库。可以通过在HTML文件中添加以下代码来引入这个库: ``` <script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script> ``` 接下来,我们可以编写JavaScript代码来读取Excel表格数据。首先,我们需要选择并上传一个Excel文件: ```javascript var fileInput = document.getElementById('fileInput'); var workbook; fileInput.addEventListener('change', function(e) { var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var data = new Uint8Array(e.target.result); workbook = XLSX.read(data, { type: 'array' }); }; reader.readAsArrayBuffer(file); }); ``` 上述代码将会在文件选择框的`change`事件发生时触发。一旦读取完成,我们将获取到一个`workbook`对象,它包含了Excel文件的所有信息。 然后,我们可以使用`SheetJS`库提供的API来读取具体的单元格数据。可以通过以下代码来读取第一个Sheet的A1单元格的数据: ```javascript var worksheet = workbook.Sheets[workbook.SheetNames[0]]; var cellValue = worksheet.A1.v; ``` 通过上述代码,我们可以读取Excel表格中各个单元格的数据。可以根据需要进行循环遍历和处理。 需要注意的是,由于安全性的限制,JavaScript无法直接访问本地计算机文件系统上的文件,因此需要用户手动选择并上传文件。同时,由于使用了第三方库,需要保证可以访问到这些库的链接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值