JSP中导入导出Excel文件1

合集下载

JSP中导入导出Excel文件

JSP中导入导出Excel文件

JSP中导入导出Excel文件一.POI简介Jakarta POI 是apache的子项目,目标是处理ole2对象。

它提供了一组操纵Windows文档的Java API目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。

它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel 对象,你可以控制一些属性如sheet,cell等等。

二.HSSF概况HSSF 是sHorrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。

也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。

通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。

HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

前者很好理解,后者比较抽象,但操作效率要高得多。

三.开始编码1 .准备工作要求:JDK 1.4+POI开发包可以到 /dyn/closer.cgi/jakarta/poi/ 最新的POI工具包2 . EXCEL 结构HSSFWorkbook excel 文档对象介绍HSSFSheet excel的表单HSSFRow excel的行HSSFCell excel的格子单元HSSFFont excel字体HSSFName 名称HSSFDataFormat 日期格式HSSFHeader sheet头HSSFFooter sheet尾和这个样式HSSFCellStyle cell样式辅助操作包括HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表4 .可参考文档POI 主页:/poi/,初学者如何快速上手使用POI HSSF/poi/hssf/quick-guide.html 。

代码例子/user1/6749/archives/2005/18347.html里面有很多例子代码,可以很方便上手。

导出EXCEL的两个方法

导出EXCEL的两个方法

导出EXCEL的两个⽅法⽅法⼀:/*** 导出参数模板设置,通过相似查找出来的数据*/private void handleExportToExcelByLikeQuery(Page page, HttpServletResponse response) {try {List<ExworkRecordExportVo> list = new ArrayList<>();List<ExworksRecord> exworksRecordList = page.getList();if (exworksRecordList != null) {for (ExworksRecord e : exworksRecordList) {ExworkRecordExportVo v = new ExworkRecordExportVo();v.setOrderNo(e.getOrderNo());v.setApplierNo(e.getApplierNo());v.setApplierName(e.getApplierName());v.setLeaderNo(e.getLeaderNo());v.setLeaderName(e.getLeaderName());v.setpInTime(e.getpInTime());v.setpOutTime(e.getpOutTime());switch (e.getStatus()) {case "1":v.setStatus("审核中");break;case "2":v.setStatus("已通过");break;case "3":v.setStatus("驳回");break;case "4":v.setStatus("废弃");break;default:v.setStatus("");break;}v.setRemark(e.getRemark());v.setFinishStatus("1".equals(e.getFinishStatus())?"未完成":"完成");v.setCreateTime(e.getCreateTime());list.add(v);}}ExportParams params = new ExportParams("申请列表", "申请列表", ExcelType.HSSF);Workbook workbook = ExcelExportUtil.exportExcel(params, ExworkRecordExportVo.class, list);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("申请列表--" + dateFormat.format(new Date()) + "" + ".xls", "UTF-8"));// 组装附件名称和格式 ServletOutputStream out = response.getOutputStream();workbook.write(out);out.flush();out.close();} catch (IOException e) {e.printStackTrace();}}主要⽤的三个jar包import org.jeecgframework.poi.excel.ExcelExportUtil;import org.jeecgframework.poi.excel.entity.ExportParams;import org.jeecgframework.poi.excel.entity.enmus.ExcelType;ExcelExportUtil.exportExcel(params, ExworkRecordExportVo.class, list);主要参数: 1:ExportParams 、2:实体类 ExworkRecordExportVo 3:实体类对应的list在封装⼀下excel的名字和其他参数即可⽅法⼆:public void exportConferenceEnrolChangeList(@RequestParam(required = true, value = "enrolId") Integer enrolId,@RequestParam(required = true, value = "accessToken") String accessToken, HttpServletResponse response) throws IOException {("*****调⽤ ConferenceEnrolChangeController 类 - exportConferenceEnrolChangeList ⽅法,参数:enrolId:" + enrolId + ", accessToken:" + accessToken);Assert.assertNotEmpty(accessToken, "accessToken");Assert.assertIntNotEmpty(enrolId, "enrolId");response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("报名名单配置变更记录.xls", "UTF-8"));// 第⼀步,创建⼀个webbook,对应⼀个Excel⽂件HSSFWorkbook wb = new HSSFWorkbook();// 第⼆步,在webbook中添加⼀个sheet,对应Excel⽂件中的sheetHSSFSheet sheet = wb.createSheet("变更记录");// 第三步,在sheet中添加表头第0⾏,注意⽼版本poi对Excel的⾏数列数有限制shortHSSFRow row = sheet.createRow((int) 0);// 第四步,创建单元格,并设置值表头设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建⼀个居中格式HSSFCell cell = row.createCell((short) 0);cell.setCellValue("操作⼈");cell.setCellStyle(style);cell = row.createCell((short) 1);cell.setCellValue("mip");cell.setCellStyle(style);cell = row.createCell((short) 2);cell.setCellValue("单位");cell.setCellStyle(style);cell = row.createCell((short) 3);cell.setCellValue("部门");cell.setCellStyle(style);cell = row.createCell((short) 4);cell.setCellValue("变更操作");cell.setCellStyle(style);cell = row.createCell((short) 5);cell.setCellValue("变更内容");cell.setCellStyle(style);cell = row.createCell((short) 6);cell.setCellValue("变更原因");cell.setCellStyle(style);// 第五步,写⼊实体数据 service查询数据库得到的listList<ConferenceEnrolChangeRecord> list = conferenceEnrolChangeService.getConferenceEnrolChangeListForExport(enrolId); for (int i = 0; i < list.size(); i++) {row = sheet.createRow(i + 1);ConferenceEnrolChangeRecord record = list.get(i);// 第六步,创建单元格,并设置值row.createCell((short) 0).setCellValue(record.getOperationName());row.createCell((short) 1).setCellValue(record.getMipNo());row.createCell((short) 2).setCellValue(record.getCompany());row.createCell((short) 3).setCellValue(record.getDepartment());row.createCell((short) 4).setCellValue(record.getChangeOperation());row.createCell((short) 5).setCellValue(record.getChangeContent());row.createCell((short) 6).setCellValue(record.getChangeReason());}try {ServletOutputStream out = response.getOutputStream();wb.write(out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}}是⼀个接接⼝调⽤⽅法,创建步骤很明确,⼀步⼀步操作即可;。

js导入导出excel(实例代码)

js导入导出excel(实例代码)

js导⼊导出excel(实例代码)复制代码代码如下:<html xmlns="/1999/xhtml" ><head><title>Untitled Page</title></head><script language="javascript" type="text/javascript">function importXLS(fileName){objCon = new ActiveXObject("ADODB.Connection");objCon.Provider = "Microsoft.Jet.OLEDB.4.0";objCon.ConnectionString = "Data Source=" + fileName + ";Extended Properties=Excel 8.0;";objCon.CursorLocation = 1;objCon.Open;var strQuery;//Get the SheetNamevar strSheetName = "Sheet1$";var rsTemp = new ActiveXObject("ADODB.Recordset");rsTemp = objCon.OpenSchema(20);if(!rsTemp.EOF)strSheetName = rsTemp.Fields("Table_Name").Value;rsTemp = null;rsExcel = new ActiveXObject("ADODB.Recordset");strQuery = "SELECT * FROM [" + strSheetName + "]";rsExcel.ActiveConnection = objCon;rsExcel.Open(strQuery);while(!rsExcel.EOF){for(i = 0;i<rsExcel.Fields.Count;++i){alert(rsExcel.Fields(i).value);}rsExcel.MoveNext;}// Close the connection and dispose the fileobjCon.Close;objCon =null;rsExcel = null;}</script></head><body><input type="file" id="f" /><input type="button" id="b" value="import" onclick="if(f.value=='')alert('请选择xls⽂件');else importXLS(f.value)" /> </body></html>复制代码代码如下:function AutomateExcel(){// Start Excel and get Application object.var oXL = new ActiveXObject("Excel.Application");oXL.Visible = true;// Get a new workbook.var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;// Add table headers going cell by cell.oSheet.Cells(1, 1).Value = "First Name";oSheet.Cells(1, 2).Value = "Last Name";oSheet.Cells(1, 3).Value = "Full Name";oSheet.Cells(1, 4).Value = "Salary";// Format A1:D1 as bold, vertical alignment = center.oSheet.Range("A1", "D1").Font.Bold = true;oSheet.Range("A1", "D1").VerticalAlignment = -4108; //xlVAlignCenter// Create an array to set multiple values at once.// Fill A2:B6 with an array of values (from VBScript).oSheet.Range("A2", "B6").Value = CreateNamesArray();// Fill C2:C6 with a relative formula (=A2 & " " & B2).var oRng = oSheet.Range("C2", "C6");oRng.Formula = "=A2 & " " & B2";// Fill D2:D6 with a formula(=RAND()*100000) and apply format.oRng = oSheet.Range("D2", "D6");oRng.Formula = "=RAND()*100000";oRng.NumberFormat = "$0.00";// AutoFit columns A:D.oRng = oSheet.Range("A1", "D1");oRng.EntireColumn.AutoFit();// Manipulate a variable number of columns for Quarterly Sales Data. DispalyQuarterlySales(oSheet);// Make sure Excel is visible and give the user control// of Excel's lifetime.oXL.Visible = true;erControl = true;}<HTML><HEAD><TITLE>将页⾯中指定表格的数据导⼊到Excel中</TITLE><SCRIPT LANGUAGE="javascript"><!--function AutomateExcel(){var oXL = new ActiveXObject("Excel.Application"); //创建应该对象var oWB = oXL.Workbooks.Add();//新建⼀个Excel⼯作簿var oSheet = oWB.ActiveSheet;//指定要写⼊内容的⼯作表为活动⼯作表var table = document.all.data;//指定要写⼊的数据源的idvar hang = table.rows.length;//取数据源⾏数var lie = table.rows(0).cells.length;//取数据源列数// Add table headers going cell by cell.for (i=0;i<hang;i++){//在Excel中写⾏for (j=0;j<lie;j++){//在Excel中写列//定义格式oSheet.Cells(i+1,j+1).NumberFormatLocal = "@";//上⾯这⼀句是将单元格的格式定义为⽂本oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗oSheet.Cells(i+1,j+1).Font.Size = 10;//字体⼤⼩oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写⼊值}}oXL.Visible = true;erControl = true;}//--></SCRIPT></HEAD><BODY><table border="0" width="300" id="data" bgcolor="black" cellspacing="1"><tr bgcolor="white"><td>编号</td><td>姓名</td><td>年龄</td><td>性别</td></tr><tr bgcolor="white"><td>0001</td><td>张三</td><td>22</td><td>⼥</td></tr><tr bgcolor="white"><td>0002</td><td>李四</td><td>23</td><td>男</td></tr></table><input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel"></BODY></HTML>复制代码代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!-- 导出excle的三个⽅法要把ie浏览器的"对没有标记为安全的 ActiveX 控件进⾏初始化和脚本运⾏设置为提⽰或启⽤" --> <html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>WEB页⾯导出为EXCEL⽂档的⽅法</title></head><body><table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"><tr><td colspan="5" align="center">WEB页⾯导出为EXCEL⽂档的⽅法</td></tr><tr><td>列标题1</td><td>列标题2</td><td>列标题3</td><td>列标题4</td><td>列标题5</td></tr><tr><td>aaa</td><td></td><td>ccc</td><td>ddd</td><td>eee</td></tr><tr><td>AAA</td><td></td><td>CCC</td><td>DDD</td><td>EEE</td></tr><tr><td>FFF</td><td>GGG</td><td>HHH</td><td>III</td><td>JJJ</td></tr></table><input type="button" onclick="javascript:method1('tableExcel');" value="第⼀种⽅法导⼊到EXCEL"><input type="button" onclick="javascript:method2('tableExcel');" value="第⼆种⽅法导⼊到EXCEL"><input type="button" onclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种⽅法导⼊到EXCEL"> <script language="javascript">function method1(tableid) {//整个表格拷贝到EXCEL中var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excelvar oWB = oXL.Workbooks.Add(); //获取workbook对象var oSheet = oWB.ActiveSheet; //激活当前sheetvar sel = document.body.createTextRange();sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中sel.select(); //全选TextRange中内容sel.execCommand("Copy"); //复制TextRange中内容oSheet.Paste(); //粘贴到活动的EXCEL中oXL.Visible = true; //设置excel可见属性}function method2(tableid) //读取表格中每个单元到EXCEL中{var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excelvar oWB = oXL.Workbooks.Add(); //获取workbook对象var oSheet = oWB.ActiveSheet; //激活当前sheetvar Lenr = curTbl.rows.length; //取得表格⾏数for (i = 0; i < Lenr; i++) {var Lenc = curTbl.rows(i).cells.length; //取得每⾏的列数for (j = 0; j < Lenc; j++) {oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText; //赋值 }}oXL.Visible = true; //设置excel可见属性}function getXlsFromTbl(inTblId, inWindow) {try {var allStr = "";var curStr = "";if (inTblId != null && inTblId != "" && inTblId != "null") {curStr = getTblData(inTblId, inWindow);}if (curStr != null) {allStr += curStr;}else {alert("你要导出的表不存在!");return;}var fileName = getExcelFileName();doFileExport(fileName, allStr);}catch (e) {alert("导出发⽣异常:" + + "->" + e.description + "!");}}function getTblData(inTbl, inWindow) {var rows = 0;var tblDocument = document;if (!!inWindow && inWindow != "") {if (!document.all(inWindow)) {return null;}else {tblDocument = eval(inWindow).document;}}var curTbl = tblDocument.getElementById(inTbl);var outStr = "";if (curTbl != null) {for (var j = 0; j < curTbl.rows.length; j++) {for (var i = 0; i < curTbl.rows[j].cells.length; i++) {if (i == 0 && rows > 0) {outStr += " /t";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + "/t";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) { outStr += " /t";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) { rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += "/r/n";}}else {outStr = null;alert(inTbl + "不存在!");}return outStr;}function getExcelFileName() {var d = new Date();var curYear = d.getYear();var curMonth = "" + (d.getMonth() + 1);var curDate = "" + d.getDate();var curHour = "" + d.getHours();var curMinute = "" + d.getMinutes();var curSecond = "" + d.getSeconds();if (curMonth.length == 1) {curMonth = "0" + curMonth;}if (curDate.length == 1) {curDate = "0" + curDate;}if (curHour.length == 1) {curHour = "0" + curHour;}if (curMinute.length == 1) {curMinute = "0" + curMinute;}if (curSecond.length == 1) {curSecond = "0" + curSecond;}var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_" + curHour + curMinute + curSecond + ".csv";return fileName;}function doFileExport(inName, inStr) {var xlsWin = null;if (!!document.all("glbHideFrm")) {xlsWin = glbHideFrm;}else {var width = 6;var height = 4;var openPara = "left=" + (window.screen.width / 2 - width / 2)+ ",top=" + (window.screen.height / 2 - height / 2)+ ",scrollbars=no,width=" + width + ",height=" + height;xlsWin = window.open("", "_blank", openPara);}xlsWin.document.write(inStr);xlsWin.document.close();xlsWin.document.execCommand('Saveas', true, inName);xlsWin.close();}</script></body></html>。

java实现导出Excel(跨行跨列)

java实现导出Excel(跨行跨列)

java实现导出Excel(跨行跨列)在Java中,可以使用Apache POI库来实现导出Excel文件,并且可以实现跨行和跨列的功能。

Apache POI是一个开源的Java库,可以处理Microsoft Office格式的文档,包括Excel。

以下是使用Apache POI库实现导出Excel文件的步骤:1. 首先,需要引入Apache POI依赖。

可以在Maven或Gradle中添加以下依赖项:```xml<!-- Apache POI --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>2. 创建一个Workbook对象,该对象代表一个Excel文件:```javaWorkbook workbook = new XSSFWorkbook(;```3. 创建一个Sheet对象,该对象代表Excel文件中的一个工作表:```javaSheet sheet = workbook.createSheet("Sheet1");```4. 创建行和单元格,根据需要设置跨行和跨列的属性。

可以使用CellRangeAddress类来实现跨行和跨列的功能:```javaRow row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("跨行跨列");//合并单元格,从第1行到第3行,从第1列到第5列CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 4);sheet.addMergedRegion(cellRangeAddress);5. 将数据写入Excel文件中的单元格:```javaRow row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello");```6. 将Workbook对象写入到文件中:```javaFileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");workbook.write(fileOutputStream);fileOutputStream.close(;```完整的示例代码如下所示:```javaimport ermodel.*;import org.apache.poi.ss.util.CellRangeAddress;import ermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;public class ExcelExporterpublic static void main(String[] args) throws IOExceptionWorkbook workbook = new XSSFWorkbook(;Sheet sheet = workbook.createSheet("Sheet1");Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("跨行跨列");//合并单元格,从第1行到第3行,从第1列到第5列CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 2, 0, 4);sheet.addMergedRegion(cellRangeAddress);FileOutputStream fileOutputStream = newFileOutputStream("output.xlsx");workbook.write(fileOutputStream);fileOutputStream.close(;System.out.println("Excel文件导出成功!");}```执行该代码后,会在项目的根目录下生成一个名为`output.xlsx`的Excel文件,其中包含一个跨行和跨列的单元格。

JS操作EXCEL大全

JS操作EXCEL大全

JS操作EXCEL大全JavaScript 是一种非常流行的编程语言,广泛用于 Web 开发。

虽然JavaScript 不是用来处理 Excel 文件的首选语言,但我们仍然可以使用一些第三方库和 JavaScript 内置的功能来操作 Excel 文件。

在接下来的文章中,我们将介绍一些常见的技术和库,以便在 JavaScript 中操作Excel 文件。

1. 使用 JavaScript 原生 API 操作 Excel 文件:JavaScript 提供了一些用于处理文件的 API,可以使用这些 API 执行一些基本的 Excel 文件操作。

例如,可以使用 FileReader API 读取Excel 文件,然后使用 JavaScript 操作数据。

这种方式主要适用于读取较小的 Excel 文件。

2.使用第三方库:2.1. ExcelJS:ExcelJS 是一个流行的 JavaScript 库,用于在浏览器和 Node.js 中操作 Excel 文件。

它提供了许多用于读取、写入和修改Excel 文件的方法。

您可以使用 ExcelJS 创建、读取和修改 Excel 文件,并进行复杂的数据操作,例如合并单元格、设置单元格样式等。

2.2. xlsx-populate:xlsx-populate 是另一个用于操作 Excel 文件的库,它提供了丰富的 API,使开发人员能够在浏览器和 Node.js 中读取和写入 Excel 文件。

它支持各种 Excel 功能,如图表、公式、数据验证等。

2.3. Excel4Node:Excel4Node 是一个用于操作 Excel 文件的轻量级库。

它使用 Apache POI 库来处理 Excel 文件,并提供了一组简单而强大的 API。

你可以使用 Excel4Node 通过浏览器或 Node.js 读取、写入和修改 Excel 文件。

3. 数据导出为 Excel 格式:你可以使用 JavaScript 将数据导出为 Excel 格式。

jsp 中poi 实现导入导出excel

jsp 中poi 实现导入导出excel

1.excel导入数据导入时候注意数字类型和字符类型的区别,数字类型要在excel中设置数字类型,对应数据库中也应该建立对应类型<%@ page import="com.guanri.database.*,java.util.*,com.guanri.util.*,com.jspsmart.upload.*" contentType="text/html; charset=GBK" %><%@ pageimport="java.util.*,java.io.*,org.apache.poi.poifs.filesystem.*,ermodel.*" %><jsp:include page="/admin/checkLogin.jsp"/><%String result = "";String contracId = "";String projectname = "";double projectscale = 0;String projecttype="";String projectconunit="";double designtime = 0;String designphase = "";double completedtime = 0;String participants = "";String positionofpro = "";String dutiesas = "";int inum = 0;int unum = 0;int rnum = 0;int snum = 0;String rmstr = "";Table tb = new Table();Vector vc = null;Hashtable rows = new Hashtable();String sql = "";if(request.getMethod().equalsIgnoreCase("POST")) {String sdir = "/download/xlsdir/"; //文件保存目录String filesep=System.getProperty("file.separator");String ssdir = filesep+"download"+filesep+"xlsdir"+filesep;Calendar c = Calendar.getInstance();String fname = c.getTimeInMillis()+".xls";String sfname = sdir + fname;String ss = "xls"; //支持的文件后缀名try{SmartUpload su = new SmartUpload();su.initialize(pageContext);su.setAllowedFilesList(ss);su.upload();com.jspsmart.upload.File file = su.getFiles().getFile(0);if(!file.isMissing()){file.saveAs(sfname);// System.out.println(application.getRealPath("/")+ssdir+fname );FileInputStream finput = new FileInputStream(application.getRealPath("/")+ssdir+fname );//设定FileINputStream读取Excel档POIFSFileSystem fs = new POIFSFileSystem( finput );HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wb.getSheetAt(0);//读取第一个工作表,宣告其为sheetfinput.close();HSSFRow row=null;//宣告一列HSSFCell cell=null;//宣告一个储存格short i=0;short y=0;//以巢状迴圈读取所有储存格资料System.out.println("sheet.getLastRowNum()="+sheet.getLastRowNum());for (i=1;i<=sheet.getLastRowNum();i++){row=sheet.getRow(i);for (y=1;y<=row.getLastCellNum();y++){cell=row.getCell(y);switch(y){case 1: //合同号if(cell!=null){contracId=(cell.getStringCellValue()).trim();}break;case 2: //项目名称if(cell!=null){projectname=(cell.getStringCellValue()).trim();}break;case 3: //项目规模if(cell!=null){projectscale=cell.getNumericCellValue();}break;case 4: //项目类型if(cell!=null){projecttype=(cell.getStringCellValue()).trim();}break;case 5: //项目建设单位if(cell!=null){projectconunit=(cell.getStringCellValue()).trim();}break;case 6: //设计时间if(cell!=null){designtime=cell.getNumericCellValue();}break;case 7: //设计阶段if(cell!=null){designphase=(cell.getStringCellValue()).trim();}break;case 8: //竣工时间if(cell!=null){completedtime=cell.getNumericCellValue();}break;case 9: //参与人姓名if(cell!=null){participants=(cell.getStringCellValue()).trim();}break;case 10: //担任项目职务if(cell!=null){positionofpro=(cell.getStringCellValue()).trim();}break;case 11: //担任职责if(cell!=null){dutiesas=(cell.getStringCellValue()).trim();}break;}}sql = "insert into hy_pro_briefinfo(contracId,projectname,projectscale,projecttype,projectconunit,designtime,designphase,completedtime, participants,positionofpro,dutiesas) ";sql+="values('"+contracId+"','"+projectname+"','"+projectscale+"','"+projecttype+"','"+projectconunit+"','"+(int)designti me+"','"+designphase+"','"+(int)completedtime+"','"+participants+"','"+positionofpro+"','"+dutiesas+"')"; //System.out.println(sql);snum = tb.update(sql);if(snum<=0){++rnum;rmstr = rmstr + ",";}else{++inum;}mit();tb.setCommit(true);// System.out.println("result="+result);//System.out.println("snum="+snum +"inum="+inum);}result = "共成功上传"+(inum+unum)+" 条记录,其中新增"+inum+" 条,更新"+unum+" 条;失败"+rnum+" 条("+rmstr+" )";// System.out.println(result);java.io.File f = new java.io.File(application.getRealPath("/")+ssdir+fname);f.delete();}else{result = "上传文件失败";}}catch(Exception ex){ex.printStackTrace();java.io.File f = new java.io.File(application.getRealPath("/")+ssdir+fname);//f.delete();// result = ex.getMessage();if(result.indexOf("1010")>0){result = "文件格式不对!只支持"+ss+"格式文件";}if("You cannot get a numeric value from a String based cell".equals(result)){result = "格式错误:在数字单元格中存在非数字!第"+(unum+inum+1)+"条记录出错";}}//finally{// response.sendRedirect("pro_per_info.jsp");// }}%><jsp:include page="/admin/BodyStart" />Ext.MessageBox.alert("提示",'<%=result %>');setTimeout("window.location.href='pro_per_info.jsp'", 1000);<jsp:include page="/admin/BodyEnd" />2.excel导出数据导出的时候注意中文编码的问题response.reset();response.setContentType("application/vnd.ms-excel");必须按照先后顺序书写<%@ page language="java"import="com.guanri.database.*,java.util.*,com.guanri.util.*,com.jspsmart.upload.*" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%><%@ page import="java.util.*,java.io.*,ermodel.*" %><%//response.setContentType("application/msexcel;charset=utf-8" );//response.setContentType("text/html;charset=utf-8");response.reset();response.setContentType("application/vnd.ms-excel");request.setCharacterEncoding("gb2312");String workSheetName = "pro_info.xls";response.setHeader("Content-disposition", "attachment; filename="+workSheetName);//WriteExcel we=new WriteExcel();//System.out.println("文件生成");//we.getExcel("steet1",response.getOutputStream());HSSFWorkbook workbook = new HSSFWorkbook(); //产生工作簿对象HSSFSheet sheet = workbook.createSheet(); //产生工作表对象sheet.setDefaultRowHeight((short) 10);sheet.setDefaultColumnWidth((short) 20);sheet.setColumnWidth((short) 4, (short) 10000);// 单位workbook.setSheetName(0,"firstSheet");// 设置字体HSSFFont font = workbook.createFont();// font.setFontHeightInPoints(( short ) 20 ); // 字体高度// font.setColor(HSSFFont.COLOR_RED); // 字体颜色font.setFontName( " 黑体" ); // 字体font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 宽度// font.setItalic( true ); // 是否使用斜体// font.setStrikeout(true); // 是否使用划线// 设置单元格类型HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setFont(font);cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 水平布局:居左边cellStyle.setWrapText( true );HSSFRow row = sheet.createRow((short)0);//产生第一行HSSFCell cell = row.createCell((short) 0);//产生第一个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("本公司项目统计信息");row = sheet.createRow((short) 1);//产生第二行cell = row.createCell((short) 0);//产生第一个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("序号");cell = row.createCell((short) 1);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("姓名");cell = row.createCell((short) 2);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("项目名称");cell = row.createCell((short) 3);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("项目类型");cell = row.createCell((short) 4);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("项目规模");cell = row.createCell((short) 5);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("担任项目职务");cell = row.createCell((short) 6);//产生第二个单元格cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("设计时间");cell = row.createCell((short) 7);//产生第二个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("设计阶段");cell = row.createCell((short) 8);//产生第二个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("项目建设单位");cell = row.createCell((short) 9);//产生第二个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("竣工时间");cell = row.createCell((short) 10);//产生第二个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("专项设计");cell = row.createCell((short) 11);//产生第二个单元格 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("直属专业领导");Table tb = new Table();Vector vc = null;Hashtable rows=new Hashtable();String sql = "";sql = "select * from hy_pro_briefinfo where 1=1"; sql = sql + " order by participants";vc = tb.getContent(sql);// System.out.println(sql);// String result = "";int order=0;String contracId = "";String projectname = "";String projectscale = "";String projecttype="";String projectconunit="";double designtime = 0;String designphase = "";double completedtime = 0;String participants = "";String positionofpro = "";String dutiesas = "";String leader="";int iRow=2;String info="";String pername="";int num=1;for(int i=0;i<vc.size();i++){rows = (Hashtable)vc.get(i);order=i+1;participants=(String)rows.get("participants");if(!pername.equals(participants)){pername=participants;num=1;}else{num++;}// System.out.println("participants="+participants);projectname=(String)rows.get("projectname");projecttype=(String)rows.get("projecttype");// System.out.println("projectname="+projectname);positionofpro=(String)rows.get("positionofpro");// System.out.println("positionofpro="+positionofpro);designtime=((Integer)rows.get("designtime")).intValue();projectscale=(Double)rows.get("projectscale")+"";// System.out.println("designtime="+designtime);designphase=(String)rows.get("designphase");// System.out.println("designphase="+designphase);projectconunit=(String)rows.get("projectconunit");// System.out.println("projectconunit="+projectconunit);completedtime=((Integer)rows.get("completedtime")).intValue(); // System.out.println("completedtime="+completedtime);dutiesas=(String)rows.get("dutiesas");// System.out.println("dutiesas="+dutiesas);row= sheet.createRow((short)iRow);;for(int j=1;j<=11;j++){cell = row.createCell((short)(j-1));cell.setCellStyle(cellStyle); // 设置单元格样式cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);switch(j-1){case 0: //编号info=num+"";break;case 1: //姓名info=participants+"";break;case 2: //项目名称info=projectname+"";break;case 3: //项目类型info=projecttype+"";break;case 4: //面积info="建筑面积:"+projectscale+"平方米";break;case 5: //担任项目职务info=positionofpro+"";break;case 6: //设计时间info=designtime+"";info=info.substring(0,info.indexOf("."));break;case 7: //设计阶段info=designphase+"";break;case 8: //施工单位info=projectconunit+"";break;case 9: //竣工时间info=completedtime+"";info=info.substring(0,info.indexOf("."));if("0".equals(info)){info="";}break;case 10: //专项设计info=dutiesas+"";break; //直属专业领导case 11:info=leader+"";break;}//System.out.println("info="+info);cell.setCellValue(info);}iRow++;}OutputStream output=response.getOutputStream();output.flush();workbook.write(response.getOutputStream());output.close();%>。

JSP页面中导出Excel文件及其中文乱码的解决办法

JSP页面中导出Excel文件及其中文乱码的解决办法

JSP页面‎中导出Ex‎c el文件‎及其中文乱‎码的解决办‎法Web‎应用导出E‎x cel报‎表的简单实‎现(HTM‎L)‎在Web应‎用中,很多‎数据经常要‎导出成Ex‎c el文档‎。

用专门的‎生成真正的‎E xcel‎文档的方式‎比较复杂,‎不太好用。

‎所以经常用‎一种简单的‎方式来实现‎,即将报表‎保存为HT‎M L格式,‎然后用Ex‎c el打开‎。

实现方‎式:第一‎步,用JS‎P实现HT‎M L版本的‎报表第二‎步,在该J‎S P页面头‎部设置re‎s pons‎e的Con‎t entT‎y pe为E‎x cel格‎式<%‎resp‎o nse.‎s etCo‎n tent‎T ype(‎"appl‎i cati‎o n/vn‎d.ms-‎e xcel‎;char‎s et=G‎B K");‎%>‎中文问题‎:查看源‎代码时发现‎J SP文件‎中写死的中‎文为乱码,‎则在JSP‎文件头部添‎加一行<‎%@ pa‎g e co‎n tent‎T ype=‎"text‎/html‎; cha‎r set=‎g b231‎2" %>‎查看源代‎码时发现文‎字为中文,‎但是用Ex‎c el打开‎为乱码则在‎<html‎>与<he‎a d>中加‎入<me‎t a ht‎t p-eq‎u iv="‎C onte‎n t-Ty‎p e" c‎o nten‎t="te‎x t/ht‎m l; c‎h arse‎t=GBK‎">用‎S ervl‎e t实现也‎是类似的处‎理方法。

‎实现样例‎:Test‎.jsp‎<%@ ‎p age ‎c onte‎n tTyp‎e="te‎x t/ht‎m l; c‎h arse‎t=GBK‎" %>‎<% re‎s pons‎e.set‎C onte‎n tTyp‎e("ap‎p lica‎t ion/‎v nd.m‎s-exc‎e l;ch‎a rset‎=GBK"‎); %>‎<HTM‎L><m‎e ta h‎t tp-e‎q uiv=‎"Cont‎e nt-T‎y pe" ‎c onte‎n t="t‎e xt/h‎t ml; ‎c hars‎e t=GB‎K"><‎h ead>‎<titl‎e>Tes‎t</ti‎t le><‎/head‎><bo‎d y><‎T ABLE‎bord‎e rCol‎o r=#1‎11111‎cell‎S paci‎n g=0 ‎c ellP‎a ddin‎g=2 w‎i dth=‎1200 ‎a lign‎=cent‎e r bo‎r der=‎1><T‎R><T‎D ali‎g n=mi‎d dle ‎w idth‎="10%‎" hei‎g ht=2‎0 row‎S pan=‎2>项目‎</TD>‎<TD ‎a lign‎=midd‎l e wi‎d th="‎2%" h‎e ight‎=20 r‎o wSpa‎n=2>计‎量单位 <‎/TD>‎<TD a‎l ign=‎m iddl‎e wid‎t h="4‎%" he‎i ght=‎20>满期‎赔付率 <‎/TD>‎</TR>‎</TA‎B LE>‎</bod‎y></‎H TML>‎Web应‎用导出Ex‎c el报表‎的简单实现‎(HTML‎)在We‎b应用中,‎很多数据经‎常要导出成‎E xcel‎文档。

Excel数据导入和导出的方法

Excel数据导入和导出的方法

Excel数据导入和导出的方法Excel是一款功能强大的电子表格软件,广泛应用于各行各业。

在工作和学习中,我们经常需要将数据从其他来源导入到Excel中,或者将Excel中的数据导出到其他应用程序中。

本文将介绍几种常用的Excel数据导入和导出的方法,帮助您高效地处理数据。

一、从外部文件导入数据1. 从文本文件导入数据:Excel支持从常见的文本文件(如CSV、TXT等)导入数据。

您只需依次点击“数据”-“从文本”选项,选择并打开相应的文本文件,按照向导提示设置分隔符、数据格式等,即可将文本文件中的数据导入到Excel中。

2. 从数据库导入数据:如果您的数据存储在数据库中,可以通过Excel的“数据”-“获取外部数据”-“从数据库”选项连接到数据库,并选择需要导入的数据表或查询结果,最后将数据导入到Excel的工作表中。

3. 从Web页面导入数据:如果需要从Web页面导入数据,可以使用Excel的“数据”-“从Web”选项。

输入目标Web页面的URL地址,Excel会自动解析页面结构,并将数据导入到工作表中。

二、使用Excel自带的导入功能1. 数据透视表功能:使用数据透视表功能可以方便地对大量数据进行汇总和分析。

您可以将原始数据导入到Excel中的工作表,然后使用数据透视表快速生成汇总报表。

2. 文本转列功能:当数据以文本格式存储在一列中,需要按照特定的分隔符将其分隔成多列时,可以使用Excel的文本转列功能。

只需选中待分隔的数据,点击“数据”-“文本到列”,按照向导提示选择分隔符,即可将文本转换为多列。

三、将Excel数据导出到其他应用程序1. 导出为文本文件:如果需要将Excel中的数据导出为文本文件,可以选择“文件”-“另存为”选项,选择文本文件格式(如CSV、TXT 等),保存到本地磁盘即可。

2. 导出为PDF文件:如果需要将Excel中的数据导出为PDF文件,可以使用Excel的导出功能,选择“文件”-“另存为”-“PDF”选项,并设置导出选项,点击保存即可生成PDF格式的文件。

JS导出Table为excel的三种可行方法

JS导出Table为excel的三种可行方法

JS导出Table为excel的三种可行方法[html] view plain copy1.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"2."/TR/xhtml1/DTD/xhtml1-transitional.dtd">3.<html xmlns="/1999/xhtml">4.<head>5.<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>6.<title>WEB页面导出为EXCEL文档的方法</title>7.</head>8.<body>9.<table id="tableExcel"width="100%"border="1"cellspa cing="0"cellpadding="0">10.<tr>11.<td colspan="5"align="center">WEB页面导出为EXCEL文档的方法</td>12.</tr>13.<tr>14.<td>列标题1</td>15.<td>列标题2</td>16.<td>列标题3</td>17.<td>列标题4</td>18.<td>列标题5</td>19.</tr>20.<tr>21.<td>aaa</td>22.<td>bbb</td>23.<td>ccc</td>24.<td>ddd</td>25.<td>eee</td>26.</tr>27.<tr>28.<td>AAA</td>29.<td>BBB</td>30.<td>CCC</td>31.<td>DDD</td>32.<td>EEE</td>33.</tr>34.<tr>35.<td>FFF</td>36.<td>GGG</td>37.<td>HHH</td>38.<td>III</td>39.<td>JJJ</td>40.</tr>41.</table>42.<input type="button"onclick="javascript:method1('ta bleExcel');"value="第一种方法导入到EXCEL">43.<input type="button"onclick="javascript:method2('ta bleExcel');"value="第二种方法导入到EXCEL">44.<input type="button"onclick="javascript:getXlsFrom Tbl('tableExcel',null);"value="第三种方法导入到EXCEL">45.<SCRIPT LANGUAGE="javascript">46.function method1(tableid) {//整个表格拷贝到EXCEL 中47.var curTbl = document.getElementById(tableid);48.var oXL = new ActiveXObject("Excel.Application");49.//创建AX对象excel50.var oWB = oXL.Workbooks.Add();51.//获取workbook对象52.var oSheet = oWB.ActiveSheet;53.//激活当前sheet54.var sel = document.body.createTextRange();55.sel.moveToElementText(curTbl);56.//把表格中的内容移到TextRange中57.sel.select();58.//全选TextRange中内容59.sel.execCommand("Copy");60.//复制TextRange中内容61.oSheet.Paste();62.//粘贴到活动的EXCEL中63.oXL.Visible = true;64.//设置excel可见属性65.}66.function method2(tableid) //读取表格中每个单元到EXCEL中67.{68.var curTbl = document.getElementById(tableid);69.var oXL = new ActiveXObject("Excel.Application");70.//创建AX对象excel71.var oWB = oXL.Workbooks.Add();72.//获取workbook对象73.var oSheet = oWB.ActiveSheet;74.//激活当前sheet75.var Lenr = curTbl.rows.length;76.//取得表格行数77.for (i = 0; i <Lenr; i++)78.{79.var Lenc = curTbl.rows(i).cells.length;80.//取得每行的列数81.for (j = 0; j <Lenc; j++)82.{83.oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).i nnerText;84.//赋值85.}86.}87.oXL.Visible = true;88.//设置excel可见属性89.}90.function getXlsFromTbl(inTblId, inWindow) {91.try {92.var allStr = "";93.var curStr = "";94.//alert("getXlsFromTbl");95.if (inTblId != null && inTblId != "" && inTblId != "null" ) {96.curStr = getTblData(inTblId, inWindow);97.}98.if (curStr != null) {99.allStr += curStr;100.}101.else {102.alert("你要导出的表不存在!");103.return;104.}105.var fileName = getExcelFileName();106.doFileExport(fileName, allStr);107.}108.catch(e) {109.alert("导出发生异常:" + + "->" + e.description + "!");110.}111.}112.function getTblData(inTbl, inWindow) {113.var rows = 0;114.//alert("getTblData is " + inWindow);115.var tblDocument = document;116.if (!!inWindow && inWindow != "") {117.if (!document.all(inWindow)) {118.return null;119.}120.else {121.tblDocument = eval(inWindow).document;122.}123.}124.var curTbl = tblDocument.getElementById(inTbl);125.var outStr = "";126.if (curTbl != null) {127.for (var j = 0; j <curTbl.rows.length; j++) {128.//alert("j is " + j);129.for (var i = 0; i <curTbl.rows[j].cells.length; i++) {130.//alert("i is " + i);131.if (i == 0 && rows > 0) {132.outStr += " \t";133.rows -= 1;134.}135.outStr += curTbl.rows[j].cells[i].innerText + "\t";136.if (curTbl.rows[j].cells[i].colSpan > 1) {137.for (var k = 0; k <curTbl.rows[j].cells[i].colSpan - 1; k ++) {138.outStr += " \t";139.}140.}141.if (i == 0) {142.if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {143.rows = curTbl.rows[j].cells[i].rowSpan - 1;144.}145.}146.}147.outStr += "\r\n";148.}149.}150.else {151.outStr = null;152.alert(inTbl + "不存在!");153.}154.return outStr;155.}156.function getExcelFileName() {157.var d = new Date();158.var curYear = d.getYear();159.var curMonth = "" + (d.getMonth() + 1);160.var curDate = "" + d.getDate();161.var curHour = "" + d.getHours();162.var curMinute = "" + d.getMinutes();163.var curSecond = "" + d.getSeconds();164.if (curMonth.length == 1) {165.curMonth = "0" + curMonth;166.}167.if (curDate.length == 1) {168.curDate = "0" + curDate;169.}170.if (curHour.length == 1) {171.curHour = "0" + curHour;172.}173.if (curMinute.length == 1) {174.curMinute = "0" + curMinute;175.}176.if (curSecond.length == 1) {177.curSecond = "0" + curSecond;178.}179.var fileName = "leo_zhang" + "_" + curYear + curMont h + curDate + "_"180.+ curHour + curMinute + curSecond + ".csv";181.//alert(fileName);182.return fileName;183.}184.function doFileExport(inName, inStr) {185.var xlsWin = null;186.if (!!document.all("glbHideFrm")) {187.xlsWin = glbHideFrm;188.}189.else {190.var width = 6;191.var height = 4;192.var openPara = "left=" + (window.screen.width / 2 - width / 2)193.+ ",top=" + (window.screen.height / 2 - height / 2) 194.+ ",scrollbars=no,width=" + width + ",height=" + heig ht;195.xlsWin = window.open("", "_blank", openPara);196.}197.xlsWin.document.write(inStr);198.xlsWin.document.close();199.xlsWin.document.execCommand('Saveas', true, inNam e);200.xlsWin.close();201.}202.</SCRIPT>203.</body>204.</html>。

js 解析 excel 复制

js 解析 excel 复制

js 解析excel 复制摘要:1.解析JavaScript 在Excel 中的应用2.了解Excel 中的复制操作3.实现JavaScript 解析Excel 文件并复制内容的方法正文:在现代办公场景中,Excel 作为一款功能强大的电子表格软件,广泛应用于数据处理、分析和展示。

而JavaScript 作为一种常见的编程语言,能够实现对Excel 文件的操作,从而简化数据处理流程。

本文将介绍如何使用JavaScript 解析Excel 文件并实现复制操作。

首先,我们需要了解JavaScript 在Excel 中的应用。

实际上,Excel 提供了一个JavaScript API,允许开发者使用JavaScript 语言编写自定义功能,并在Excel 中运行。

这为实现Excel 文件的解析和操作提供了便利。

接下来,我们来了解Excel 中的复制操作。

在Excel 中,复制操作通常有以下几种方式:1.使用“复制”和“粘贴”功能键。

2.选中需要复制的单元格或区域,然后右键点击,选择“复制”。

3.使用快捷键Ctrl+C(Windows 系统)或Cmd+C(Mac 系统)复制选中的单元格或区域。

现在,我们来探讨如何实现JavaScript 解析Excel 文件并复制内容的方法。

这里以使用JavaScript 库“xlsx”为例,首先需要安装该库,可以通过npm 进行安装:```pm install xlsx```安装完成后,可以使用以下代码实现解析Excel 文件并复制内容:```javascriptconst XLSX = require("xlsx");// 读取Excel 文件const workbook = XLSX.readFile("example.xlsx");// 获取第一个工作表const sheetName = workbook.SheetNames[0];const worksheet = workbook.Sheets[sheetName];// 定义复制函数function copyExcelContent(range, destination) {// 获取选中区域的地址const address = XLSX.utils.encode_range(range);// 复制选中区域到目的地XLSX.utils.book_append_sheet(workbook, destination, address);}// 示例:复制A1 单元格的内容到B1 单元格const range = { s: { r: 0, e: 0 } }; // 选中A1 单元格const destination = { s: { r: 0, e: 0 } }; // 目标位置B1 单元格copyExcelContent(range, destination);// 将更改写回文件XLSX.writeFile(workbook, "example_modified.xlsx");```通过以上代码,我们可以实现使用JavaScript 解析Excel 文件并复制内容。

基于elementplus表格导出excle文件的流程讲解

基于elementplus表格导出excle文件的流程讲解

基于elementplus表格导出excle文件的流程讲解Element Plus 是一个 Vue.js 的桌面端组件库,提供了丰富的 UI 组件,包括表格组件。

在 Element Plus 中,导出 Excel 文件是一个常见的需求,本文将详细介绍基于 Element Plus 表格导出 Excel 文件的流程。

1. 安装 Element Plus首先,确保你已经安装了 Vue.js 和 Element Plus。

可以通过 npm 或 yarn 来安装 Element Plus:```npm install element-plus```或者```yarn add element-plus```2. 导入 Element Plus在你的 Vue.js 项目的入口文件(通常是 main.js)中,将 Element Plus 导入并注册为全局组件:```javascriptimport { createApp } from 'vue'import ElementPlus from 'element-plus'import 'element-plus/dist/index.css'import App from './App.vue'const app = createApp(App)e(ElementPlus)app.mount('#app')```3.创建表格组件在你的 Vue.js 项目中,创建一个表格组件。

可以使用 Element Plus 提供的 el-table 和 el-table-column 组件。

以下是一个简单的例子:```vue<template><el-table :data="tableData"><el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="性别" prop="gender"></el-table-column></el-table></template><script>export defaultdatreturntableData:{ name: '张三', age: 20, gender: '男' },{ name: '李四', age: 22, gender: '女' },{ name: '王五', age: 25, gender: '男' }}}</script>```4. 导出 Excel 文件为了实现表格导出 Excel 文件的功能,需要使用到一个库,如`xlsx`。

在JSP中实现查询并导入Excel的通用程序

在JSP中实现查询并导入Excel的通用程序

模块。so . p hw j 模块负责连接数据库 、 s 执行 S L语 Q
句并将查询结 果 以二维数 组 的形 式 返 回, 示在 显 w b网页 上 。t lPit 数 负 责 创 建 Ecl 象 , e a er 函 b n xe 对 并从显示页面上读取数据写入 E cl 中。用户 可 xe 表 以在 Ecl xe表中进行保存 、 打印和统计分析的工作。 优点 : 利用 通 用查 询 程 序 开发 一 个 新 的查 询 模 块, 只要复制 主模块 , 更改查 询条件和 S L语句就 Q 可以了, 其他部分不用考 虑 , 5分钟就 能完成 , 减少 冗余重复的工作 , 降低了编程人员的工作量 ; 页面显
Ab t a t h sp p ri t d c s a meh d f rr aiig q i k s a c n mp rig EXC L g n rlp o rm ,as r s n sr c :T i a e r u e t o o e l n u c —e r h a d i o t n o z n E e e a rg a l pee t o t e p o r m o e l t n sp o e ta y a d d p n a l n p a t e h r g a c d i ,a d wa rv d se d n e e d be i r ci . s c
参数说明: bt 一 t t e 统计报表的名称 ; b 一网 ai l ri ad 页中 t l 的 i 名称 ; W一网页中 t l ae d b I O a e的行数 ;o b cl

EaSL2 I m删 JI0 -iL 61 m: 6 IY _ G @c
维普资讯
格式设置和保存操作。整个过程只需一次连接数据

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术

java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术Java是一种流行的编程语言,而JXL技术是一种用于处理Excel文件的Java库。

在本文中,我们将一步一步地介绍如何使用JXL技术导入和导出Excel文件。

我们将从JXL技术的概述开始,然后讨论如何导入Excel文件,接着是如何导出Excel文件。

JXL技术是一个基于Java的开源库,用于读取、写入和操作Microsoft Excel文件。

它提供了一组API,可以方便地处理Excel文件中的单元格、行和列。

不仅可以读取现有的Excel文件,还可以创建新的Excel文件并在其中写入数据。

JXL技术支持Excel的各种版本,包括xls和xlsx格式。

接下来,我们将讨论如何导入Excel文件。

首先,我们需要在项目中引入JXL库的依赖。

在Maven项目中,我们可以将以下依赖添加到pom.xml 文件中:xml<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>一旦我们引入了JXL依赖,我们就可以使用它的API来导入Excel文件。

首先,我们需要创建一个Workbook对象,它代表整个Excel文件。

我们可以使用Workbook类的静态方法getWorkbook()来打开一个现有的Excel文件,例如:javaWorkbook workbook = Workbook.getWorkbook(newFile("path/to/excel.xls"));在Workbook对象上,我们可以执行各种操作,例如获取特定的工作表、读取单元格的值等。

JS电子表格控件SpreadJS小功能-ExcelIO实现服务器端Excel导入导出

JS电子表格控件SpreadJS小功能-ExcelIO实现服务器端Excel导入导出

SpreadJS在V10版本后推出了纯前端的Excel导入导出,这个功能可以很方便的实现客户端的Excel导入导出,但是如果用户需要导入导出到浏览器端又该怎么办呢?其实纯前端的Excel导入导出同样可以实现服务器端的Excel导入导出。

下面让我们来看一下是如何实现的:本示例的后端使用JAVA语言,通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:从服务器端导入Excel:这部分使用纯前端实现,纯前端实现有一个弊端就是,浏览器没有权限访问服务器上工程目录以外的路径,所以需要将服务器端的Excel放入工程目录下。

然后下载到前端直接打开,核心代码如下:var excelIo = new GC.Spread.Excel.IO();var excelFilePath = 'resources/Excel/importExcel.xlsx';var xhr = new XMLHttpRequest();xhr.open('GET', excelFilePath, true);xhr.responseType = 'blob';xhr.onload = function(e) {if(this.status == 200) {// get binary data as a responsevar blob = this.response;// convert Excel to JSONexcelIo.open(blob, function(json) {var workbookObj = json;spread.fromJSON(workbookObj);}, function(e) {// process erroralert(e.errorMessage);}, {});}};xhr.send();导出Excel保存至服务器端:这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。

JS操作EXCEL大全

JS操作EXCEL大全

JS操作EXCEL大全一、读取Excel文件读取Excel文件是进行Excel操作的基础。

在JavaScript中,我们可以使用一些库来读取Excel文件,例如xlsx、xlsjs和exceljs等。

1. 使用xlsx库读取Excel文件xlsx是一个用于处理Excel文件的JavaScript库。

您可以通过以下步骤使用xlsx库来读取Excel文件:首先,将xlsx库导入到您的项目中。

您可以使用npm来安装xlsx库,并在代码中引入该库:```npm install xlsxconst XLSX = require('xlsx');```然后,使用XLSX.readFile方法读取Excel文件:```const workbook = XLSX.readFile('example.xlsx');```最后,可以通过workbook.Sheets对象获取Excel文件的内容:```const worksheet = workbook.Sheets['Sheet1'];console.log(XLSX.utils.sheet_to_json(worksheet));```2. 使用xlsjs库读取Excel文件xlsjs是另一个用于读取Excel文件的JavaScript库。

您可以使用以下步骤使用xlsjs库来读取Excel文件:首先,将xlsjs库导入到您的项目中。

您可以使用npm来安装xlsjs 库,并在代码中引入该库:```npm install xlsjsconst XLSX = require('xlsjs');```然后,使用XLSX.readFile方法读取Excel文件:```const workbook = XLSX.readFile('example.xls');```最后,可以通过workbook.Sheets对象获取Excel文件的内容:```const worksheet = workbook.Sheets['Sheet1'];console.log(XLSX.utils.sheet_to_json(worksheet));```二、写入Excel文件在读取Excel文件之后,我们还可以使用JavaScript来写入Excel 文件。

jsp实现下载excel,word,pdf,jgp,gif,xml,js过滤器实现文档

jsp实现下载excel,word,pdf,jgp,gif,xml,js过滤器实现文档

下面代码有选择的粘贴进自己项目即可,其实现解决了tomcat、resin服务器中文下载乱码问题。

web.xml配置如下<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>downLoad</filter-name><filter-class>com.tangdi.DownLoadFilter</filter-class></filter><filter-mapping><filter-name>downLoad</filter-name><url-pattern>*.downLoad</url-pattern></filter-mapping></web-app>Jsp页面配置如下其下载利用a标签进行连接,前提是服务器上下载文件路径已知需要引进el表达式和jquery.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib uri="/jsp/jstl/core" prefix="c"%><script src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js" type="text/javascript"></script><html><head><script>$(function(){var$href='${pageContext.request.contextPath}'+"/20159.downLoad?filePath=";//+encodeURICompo nent("中国.downLoad");$("#testHref").children("td").each(function(){var $id=$(this).children(":first").attr("id");var $tmpHref="";if($id=="txt"){$tmpHref=$href+"E:/apache-tomcat-6.0.35/apache-tomcat-6.0.35/webapps/MyTry/test/"+"203123 4_这是txt.txt";}else if($id=="pdf"){$tmpHref=$href+"E:/apache-tomcat-6.0.35/apache-tomcat-6.0.35/webapps/MyTry/test/"+"这是pdf.pdf";}else if($id=="excel"){$tmpHref=$href+"这是excel.xls";}else if($id=="word"){$tmpHref=encodeURI($href+"这是doc.doc","ISO8859-1");}else if($id=="jpg"){$tmpHref=$href+"这是jpg.jpg";}else if($id=="js"){$tmpHref=$href+"这是js.js";}else if($id=="jsp"){$tmpHref=$href+"这是jsp.jsp";}else if($id=="html"){$tmpHref=$href+"这是html.html";}$(this).children(":first").attr("href",$tmpHref);});});</script></head><body><div><table><tr id="testHref"><td><a id="txt" href="#">txt</a></td><td><a id="pdf" href="#">pdf</a></td><td><a id="excel" href="#">excel</a></td><td><a id="word" href="#">word</a></td><td><a id="xml" href="#">xml</a></td><td><a id="jpg" href="#">jpg</a></td><td><a id="gif" href="#">gif</a></td><td><a id="js" href="#">js</a></td><td><a id="jsp" href="#">jsp</a></td><td><a id="html" href="#">html</a></td></tr></table></div></body></html>过滤器filter配置如下package com.tangdi;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import .URLDecoder;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownLoadFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request1, ServletResponse response1,FilterChain arg2) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) request1;HttpServletResponse response = (HttpServletResponse) response1;//request.setCharacterEncoding("UTF-8");//String filePath = new String(request.getParameter("filePath").getBytes("ISO8859-1"), "UTF-8");request.setCharacterEncoding("ISO8859-1");String filePath = new String(request.getParameter("filePath").getBytes("ISO8859-1"),"UTF-8");System.out.println("*****************************************************filePat h is :" + filePath);String suffix = filePath.substring(stIndexOf(".") + 1);System.out.println("********************suffix is:"+suffix);String contentType = getContentType(suffix);//获得尾缀设置不同contentTypeString contentDisposition = "attachment; filename="+new String(filePath.substring(stIndexOf("_")+1));System.out.println("********************************************"+contentDisposit ion);response.setCharacterEncoding("ISO8859-1");response.setContentType(contentType);response.setHeader("Content-disposition", new String(contentDisposition.getBytes("UTF-8"),"ISO8859-1"));try {InputStream is = new FileInputStream(filePath);OutputStream os = response.getOutputStream();int byteRead;byte[] buffer = new byte[1024];while ((byteRead = is.read(buffer)) != -1) {os.write(buffer, 0, byteRead);}os.flush();os.close();} catch (Exception e) {e.printStackTrace();}}/**** @param suffix 下载文件尾缀* @return 返回不同response.contentType*/public String getContentType(String suffix) {if (suffix.equals("txt")) {return "text/plain";} else if(suffix.equals("doc") || suffix.equals("docx")) {return "application/msword;charset=gb2312";} else if(suffix.equals("xls") || suffix.equals("xlsx")) {return "application/-excel";} else if(suffix.equals("pdf")) {return "application/pdf";}else if(suffix.equals("gif")){return "image/gif" ;}else if(suffix.equals("jpg")){return "image/jpeg" ;}else if(suffix.equals("htm")||suffix.equals("html")||suffix.equals("jsp")){return "text/html" ;}else if(suffix.equals("xml")){return "text/xml" ;}else if(suffix.equals("js")){return "application/x-javascript" ;}return "application/octet-stream";}public void init(FilterConfig config) throws ServletException {}}注:其中编码ISO8859-1不能乱改,否则出现解析路径错误或者下载文件出错。

JS实现导出Excel的五种方法详解【附源码下载】

JS实现导出Excel的五种方法详解【附源码下载】

JS实现导出Excel的五种⽅法详解【附源码下载】本⽂实例讲述了JS实现导出Excel的五种⽅法。

分享给⼤家供⼤家参考,具体如下:这五种⽅法前四种⽅法只⽀持IE浏览器,最后⼀个⽅法⽀持当前主流的浏览器(⽕狐,IE,Chrome,Opera,Safari)<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title>html 表格导出道</title><script language="JavaScript" type="text/javascript">//第⼀种⽅法function method1(tableid) {var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var sel = document.body.createTextRange();sel.moveToElementText(curTbl);sel.select();sel.execCommand("Copy");oSheet.Paste();oXL.Visible = true;}//第⼆种⽅法function method2(tableid){var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var Lenr = curTbl.rows.length;for (i = 0; i < Lenr; i++){ var Lenc = curTbl.rows(i).cells.length;for (j = 0; j < Lenc; j++){oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;}}oXL.Visible = true;}//第三种⽅法function getXlsFromTbl(inTblId, inWindow){try {var allStr = "";var curStr = "";if (inTblId != null && inTblId != "" && inTblId != "null") {curStr = getTblData(inTblId, inWindow);}if (curStr != null) {allStr += curStr;}else {alert("你要导出的表不存在");return;}var fileName = getExcelFileName();doFileExport(fileName, allStr);}catch(e) {alert("导出发⽣异常:" + + "->" + e.description + "!");}}function getTblData(inTbl, inWindow) {var rows = 0;var tblDocument = document;if (!!inWindow && inWindow != "") {if (!document.all(inWindow)) {return null;}else {tblDocument = eval(inWindow).document;}}var curTbl = tblDocument.getElementById(inTbl);var outStr = "";if (curTbl != null) {for (var j = 0; j < curTbl.rows.length; j++) {for (var i = 0; i < curTbl.rows[j].cells.length; i++) {if (i == 0 && rows > 0) {outStr += " t";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + "t";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {outStr += " t";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += "rn";}}else {outStr = null;alert(inTbl + "不存在 !");}return outStr;}function getExcelFileName() {var d = new Date();var curYear = d.getYear();var curMonth = "" + (d.getMonth() + 1);var curDate = "" + d.getDate();var curHour = "" + d.getHours();var curMinute = "" + d.getMinutes();var curSecond = "" + d.getSeconds();if (curMonth.length == 1) {curMonth = "0" + curMonth;}if (curDate.length == 1) {curDate = "0" + curDate;}if (curHour.length == 1) {curHour = "0" + curHour;}if (curMinute.length == 1) {curMinute = "0" + curMinute;}if (curSecond.length == 1) {curSecond = "0" + curSecond;}var fileName = "table" + "_" + curYear + curMonth + curDate + "_"+ curHour + curMinute + curSecond + ".csv";return fileName;}function doFileExport(inName, inStr) {var xlsWin = null;if (!!document.all("glbHideFrm")) {xlsWin = glbHideFrm;}else {var width = 6;var height = 4;var openPara = "left=" + (window.screen.width / 2 - width / 2)+ ",top=" + (window.screen.height / 2 - height / 2)+ ",scrollbars=no,width=" + width + ",height=" + height;xlsWin = window.open("", "_blank", openPara);}xlsWin.document.write(inStr);xlsWin.document.close();xlsWin.document.execCommand('Saveas', true, inName);xlsWin.close();}//第四种function method4(tableid){var curTbl = document.getElementById(tableid);var oXL;try{oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel}catch(e){alert("⽆法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。

使用js-xlsx导出表格

使用js-xlsx导出表格

使⽤js-xlsx导出表格⾸先导⼊ xlsx.full.min.js建⽴表格数据下⾯是关键代码<a download="表格导出excel" id="excelOut" href="#" class="btn_a">导出</a>//base64转码var base64 = function (s) {return window.btoa(unescape(encodeURIComponent(s)));};//替换table数据和worksheet名字var format = function (s, c) {return s.replace(/{(\w+)}/g,function (m, p) {return c[p];});}function tableToExcel(tableid, sheetName) {var uri = 'data:application/vnd.ms-excel;base64,';var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' + 'xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'+ '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet> </x:ExcelWorksheets>'+ '</x:ExcelWorkbook></xml><![endif]-->' +' <style type="text/css">' +'table td {' +'border: 1px solid #000000;' +'width: 100px;' +'height: 30px;' +' text-align: center;' +' }' +'</style>' +'</head><body ><table class="excelTable">{table}</table></body></html>';if (!tableid.nodeType) tableid = document.getElementById("materials_table");var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};document.getElementById("excelOut").href = uri + base64(format(template, ctx));}。

前端vue使用js-xlsx导出excel的三种方法

前端vue使用js-xlsx导出excel的三种方法

前端vue使⽤js-xlsx导出excel的三种⽅法npm install --save xlsx file-saver在组件⾥⾯引⼊import FileSaver from'file-saver'import XLSX from'xlsx'第⼀种其中#outTable是在el-table上定义的idexportExcel() {var xlsxParam = { raw: true };//转换成excel时,使⽤原始的格式var wb = XLSX.utils.table_to_book(document.querySelector("#outTable"),xlsxParam);//outTable为列表idvar wbout = XLSX.write(wb, {bookType: "xlsx",bookSST: true,type: "array"});try {FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream;charset=utf-8" }),"sheetjs.xlsx");} catch (e) {if (typeof console !== "undefined") console.log(e, wbout);}return wbout;}第⼆种通过数组导出excelvar _data = [[ "id", "name", "value" ],[ 1, "sheetjs", 7262 ],[ 2, "js-xlsx", 6969 ]];const ws= XLSX.utils.aoa_to_sheet(_data);/* generate workbook and add the worksheet */const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');/* save to file */XLSX.writeFile(wb, 'SheetJS.xlsx');第三种通过json导出excelexportExcel() {var wopts = {bookType: 'xlsx',bookSST: true,type: 'binary'};var workBook = {SheetNames: ['Sheet1'],Sheets: {},Props: {}};var table = [];for(var i=0;i<this.multipleSelection.length;i++){var params = {姓名: this.multipleSelection[i].name,部门: this.multipleSelection[i].department,职务名称: this.multipleSelection[i].titles,档案编号:this.multipleSelection[i].fileNum,校验状态:this.multipleSelection[i].verifyStatus,审核状态:this.multipleSelection[i].checkedStatus,备注:this.multipleSelection[i].checkedReason,}table[i] = params};//1、XLSX.utils.json_to_sheet(data) 接收⼀个对象数组并返回⼀个基于对象关键字⾃动⽣成的“标题”的⼯作表,默认的列顺序由使⽤Object.keys的字段的第⼀次出现确定 //2、将数据放⼊对象workBook的Sheets中等待输出workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(table);//3、XLSX.write() 开始编写Excel表格//4、changeData() 将数据处理成需要输出的格式FileSaver.saveAs(new Blob([this.changeData(XLSX.write(workBook, wopts))], {type: 'application/octet-stream'}), "sheetjs.xlsx")},changeData(s) {//如果存在ArrayBuffer对象(es6) 最好采⽤该对象if (typeof ArrayBuffer !== 'undefined') {//1、创建⼀个字节长度为s.length的内存区域var buf = new ArrayBuffer(s.length);//2、创建⼀个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾var view = new Uint8Array(buf);//3、返回指定位置的字符的Unicode编码for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;return buf;} else {var buf = new Array(s.length);for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;return buf;}},第三种适合导出选中的数据如果选中的json数据字段都是你需要的可以⽤下⾯的⽅法导出const workSheet =XLSX.utils.json_to_sheet(this.multipleSelection, {header: ['列1', '列2', '列3', '列1', '列2', '列3', '列1', '列2'],skipHeader: true// 跳过上⾯的标题⾏});const ws = XLSX.utils.aoa_to_sheet(workSheet);const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');/* save to file */XLSX.writeFile(wb, 'SheetJS.xlsx');。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JSP中导入导出Excel文件12009-01-03 11:28源自:/wex660@126/blog/static/2415306520086299589489/本文将向大家介绍一个开放源码项目——Java Excel API,使用它大家就可以方便地操纵Excel 文件了。

JA V A EXCEL API简介Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。

使用该API非Windows操作系统也可以通过纯Java 应用来处理Excel数据表。

因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

现在发布的稳定版本是V2.0,提供以下功能:·从Excel 95、97、2000等格式的文件中读取数据;·读取Excel公式(可以读取Excel 97以后的公式);·生成Excel数据表(格式为Excel 97);·支持字体、数字、日期的格式化;·支持单元格的阴影操作,以及颜色操作;·修改已经存在的数据表;·现在还不支持以下功能,但不久就会提供了:·不能够读取图表信息;可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;应用示例从Excel文件读取数据表Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。

读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)import java.io.*;import jxl.*;… … … …try{//构建Workbook对象, 只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStream is = new FileInputStream(sourcefile);jxl.Workbook rwb = Workbook.getWorkbook(is);}catch (Exception e){e.printStackTrace();}一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。

参考下面的代码片段://获取第一张Sheet表Sheet rs = rwb.getSheet(0);我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。

如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。

一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。

参考下面的代码片段://获取第一行,第一列的值Cell c00 = rs.getCell(0, 0);String strc00 = c00.getContents();//获取第一行,第二列的值Cell c10 = rs.getCell(1, 0);String strc10 = c10.getContents();//获取第二行,第二列的值Cell c11 = rs.getCell(1, 1);String strc11 = c11.getContents();System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +c00.getType());System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +c10.getType());System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +c11.getType());如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell 值都作为一个字符串返回。

示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。

参考下面的代码片段:String strc00 = null;double strc10 = 0.00;Date strc11 = null;Cell c00 = rs.getCell(0, 0);Cell c10 = rs.getCell(1, 0);Cell c11 = rs.getCell(1, 1);if(c00.getType() == BEL){LabelCell labelc00 = (LabelCell)c00;strc00 = labelc00.getString();}if(c10.getType() == CellType.NUMBER){NmberCell numc10 = (NumberCell)c10;strc10 = numc10.getV alue();}if(c11.getType() == CellType.DA TE){DateCell datec11 = (DateCell)c11;strc11 = datec11.getDate();}System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +c00.getType());System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +c10.getType());System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +c11.getType());在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。

API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:每种类型的具体意义,请参见Java Excel API Document。

当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。

参考如下代码片段://操作完成时,关闭对象,释放占用的内存空间rwb.close();Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,其它的方法请参考附录中的Java Excel API Document。

· Workbook类提供的方法1. int getNumberOfSheets()获得工作薄(Workbook)中工作表(Sheet)的个数,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));int sheets = rwb.getNumberOfSheets();2. Sheet[] getSheets()返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));Sheet[] sheets = rwb.getSheets();3. String getV ersion()返回正在使用的API的版本号,好像是没什么太大的作用。

jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));String apiV ersion = rwb.getV ersion();· Sheet接口提供的方法1. String getName()获取Sheet的名称,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));jxl.Sheet rs = rwb.getSheet(0);String sheetName = rs.getName();2. int getColumns()获取Sheet表中所包含的总列数,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));jxl.Sheet rs = rwb.getSheet(0);int rsColumns = rs.getColumns();3. Cell[] getColumn(int column)获取某一列的所有单元格,返回的是单元格对象数组,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));jxl.Sheet rs = rwb.getSheet(0);Cell[] cell = rs.getColumn(0);4. int getRows()获取Sheet表中所包含的总行数,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));jxl.Sheet rs = rwb.getSheet(0);int rsRows = rs.getRows();5. Cell[] getRow(int row)获取某一行的所有单元格,返回的是单元格对象数组,示例子:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));jxl.Sheet rs = rwb.getSheet(0);Cell[] cell = rs.getRow(0);6. Cell getCell(int column, int row)获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。

相关文档
最新文档