您的位置:首页 > Web前端 > JavaScript

可以读取EXCEL文件的js代码第1/2页

2009-08-26 00:00 906 查看
首页给个有中文说明的例子,下面的例子很多大家可以多测试。
<script language="javascript" type="text/javascript"><!-- 
function readExcel() { 
var excelApp; 
var excelWorkBook; 
var excelSheet; 
try{ 
excelApp = new ActiveXObject("Excel.Application"); 
excelWorkBook = excelApp.Workbooks.open("C:\\XXX.xls"); 
excelSheet = oWB.ActiveSheet; //WorkSheets("sheet1") 
excelSheet.Cells(6,2).value;//cell的值 
excelSheet.usedrange.rows.count;//使用的行数 
excelWorkBook.Worksheets.count;//得到sheet的个数 
excelSheet=null; 
excelWorkBook.close(); 
excelApp.Application.Quit(); 
excelApp=null; 
}catch(e){ 
if(excelSheet !=null || excelSheet!=undefined){ 
excelSheet =nul; 
} 
if(excelWorkBook != null || excelWorkBook!=undefined){ 
excelWorkBook.close(); 
} 
if(excelApp != null || excelApp!=undefined){ 
excelApp.Application.Quit(); 
excelApp=null; 
} 
} 

// --></script>

如果是在网页上打开EXCEL 文件,那么在关闭的时候,进程里还有EXCEL.EXE,所以必须关闭后,刷新本页面!
<script> 
function ReadExcel() 
{ 
var tempStr = ""; 
var filePath= document.all.upfile.value; 
var oXL = new ActiveXObject("Excel.application"); 
var oWB = oXL.Workbooks.open(filePath); 
oWB.worksheets(1).select(); 
var oSheet = oWB.ActiveSheet; 
try{ 
for(var i=2;i<46;i++) 
{ 
if(oSheet.Cells(i,2).value =="null" || oSheet.Cells(i,3).value =="null" ) 
break; 
var a = oSheet.Cells(i,2).value.toString()=="undefined"?"":oSheet.Cells(i,2).value; 
tempStr+=(" "+oSheet.Cells(i,2).value+ 
" "+oSheet.Cells(i,3).value+ 
" "+oSheet.Cells(i,4).value+ 
" "+oSheet.Cells(i,5).value+ 
" "+oSheet.Cells(i,6).value+"\n"); 
} 
}catch(e) 
{ 
document.all.txtArea.value = tempStr; 
} 
document.all.txtArea.value = tempStr; 
oXL.Quit(); 
CollectGarbage(); 
} 
</script> 
<html> 
<input type="file" id="upfile" /><input type="button" onclick="ReadExcel();" value="read"> 
<br> 
<textarea id="txtArea" cols=50 rows=10></textarea> 
</html>

二、
js读取excel文件
<script> 
function readThis(){ 
var tempStr = ""; 
var filePath= document.all.upfile.value; 
var oXL = new ActiveXObject("Excel.application"); 
var oWB = oXL.Workbooks.open(filePath); 
oWB.worksheets(1).select(); 
var oSheet = oWB.ActiveSheet; 
try{ 
for(var i=2;i<46;i++){ 
if(oSheet.Cells(i,2).value =="null" || oSheet.Cells(i,3).value =="null" ) 
break; 
var a = oSheet.Cells(i,2).value.toString()=="undefined"?"":oSheet.Cells(i,2).value; 
tempStr+=(" "+oSheet.Cells(i,2).value+" "+oSheet.Cells(i,3).value+" "+oSheet.Cells(i,4).value+" "+oSheet.Cells(i,5).value+" "+oSheet.Cells(i,6).value+"\n"); 
} 
} 
catch(e){ 
//alert(e); 
document.all.txtArea.value = tempStr; 
} 
document.all.txtArea.value = tempStr; oXL.Quit(); 
CollectGarbage(); 
} 
</script> 
<html> 
<input type="file" id="upfile" /> 
<input type="button" onclick="readThis();" value="读取"><br> 
<textarea id="txtArea" cols=50 rows=10></textarea> 
</html>

三、
我在vs2005平台上要实现这么一个功能,点击一个按钮一次将大量的excel文件数据导入到sqlserver2005中
我用的是ajax技术,在前台用javascript操做excel文件,循环读取所有的excel文件,每读取一行就放进一个数组里通过web服务传到后台用c#语言将一行数据插入到数据库。思路大概就是这样。
现在功能已经实现了,具体代码如下
用javascript定义一个函数,循环读取excel文件数据
function readExcel() 
{ 
try 
{ 
var ExcelNum=new Array(); 
//重复导入之前,删除上次导入的同期数据 
WebServiceExcel.deleteOldNumber(); 
var oXL = new ActiveXObject( "Excel.Application "); 
\\r_c_num[5]的值为excel文件的名字 
var path=document.all.excelpath.value+ "\\ "+r_c_num[5] 
var oWB = oXL.Workbooks.open(path); 
\\如果excel文件有多个sheet的话从第一个sheet循环读取 
for(var x=1;x <=oWB.worksheets.count;x++) 
{ 
oWB.worksheets(x).select(); 
var oSheet =oWB.ActiveSheet; 
\\按指定开始行和开始列读取excel文件的数据 
for(var i=parseInt(r_c_num[6]);i <=parseInt(r_c_num[7]);i++) 
{ 
for(var j=parseInt(r_c_num[8]);j <=parseInt(r_c_num[9]);j++) 
{ 
if(typeof(oSheet.Cells(i,j).value)== "undefined ") 
{ 
ExcelNum[j-parseInt(r_c_num[8])+6]= " "; 
} 
else 
{ 
switch_letter(j); 
ExcelNum[j-parseInt(r_c_num[8])+6]=oSheet.Cells(i,j).value; 
} 
} 
//将读取的一行数据传到后台插入到数据库 
WebServiceExcel.insert_From_Excel(ExcelNum); 
} 
} 
} 
} 
catch(err) 
{ 
alert( "出错了, "+err.message); 
} 
}

这只是前台的关键代码。
现在的问题是,如果excel文件数据太多的话,导入过程要等好长时间,性能太差了,不知道该怎么改进???如果导几千行数据就不行了,时间让我无法忍受。请高手赐教,很着急用,谢谢了!!!
一个用JavaScript结合Excel.Application读取本地excel文件并以表格呈现的简单例子
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
var excelFileName = "E:/project/eomstools/ShowTaskCodeWorkbook/test.xls"; 
var oWB; 
function showExcel(targetDIVID){ 
//objID为表格ID 
//需要在浏览器安全级别设置中启用ActiveX 
// Start Excel and get Application object. 
var oXL=null; 
try{ 
oXL = new ActiveXObject("Excel.Application"); 
}catch(e){ 
alert(e.message); 
return ; 
} 
if (oXL == null){ 
alert("创建Excel文件失败,可能是您的计算机上没有正确安装Microsoft Office Excel软件或浏览器的安全级别设置过高!"); 
return; 
} 
try{ 
// Get a new workbook. 
oWB = oXL.Workbooks.Open(excelFileName); 
for (i = 1; i <= oWB.Sheets.Count; i++){ 
if (oWB.Sheets(i).name.lastIndexOf("月") != -1){ 
showSheet(i); 
} 
} 
} 
catch (e){ 
alert(e.message); 
} 
oWB.Close();   //不close工作簿的话,后果还是挺严重的。 
oWB = null; 
oXL = null; 
} 
function showSheet(sheetNO){ 
var oSheet = oWB.Sheets(sheetNO); 
document.write("<table border=1>"); 
for (i = 1; i < oSheet.UsedRange.Rows.Count; i++){ 
document.write("<tr>"); 
for (j = 1; j < oSheet.UsedRange.Columns.Count; j++){ 
value = oSheet.Cells(i, j).Value; 
if (value == undefined){ 
value = " "; 
} 
document.write(i == 1 ? "<th nowrap=true><b>" : "<td>"); 
document.write(value); 
document.write(i == 1 ? "</b></th>" : "</td>"); 
} 
document.write("</tr>"); 
} 
document.write("</table>"); 
oSheet = null; 
} 
//--> 
</SCRIPT> 
</HEAD> 
<BODY onLoad="showExcel();"> 
</BODY> 
</HTML>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: