excell 导入 导出
1.jar包
2.POIUtils工具类
package com.esstglobal.service.utils; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; /**
* 读写EXCEL文件
*/
public class POIUtils { /**
* @author Ted
* @param coleNames
* 列表头
* @param dataList
* 数据集
* @param fileName
* 下载时显示的文件名
*
*/
public static void exportToExcel(HttpServletResponse response,
List<String> coleNames, List<Map<String, Object>> dataList,
String fileName) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ExcelUtil.createWorkBook(coleNames, dataList).write(os);
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 设置response参数,可以打开下载页面
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));
ServletOutputStream out = response.getOutputStream();
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
} catch (IOException e) {
} }
} /**
* @Description 通过模板导出
* @author 张洋
* @date 2017年4月1日 下午4:24:43
* @param response
* @param filePath 模板路径
* @param dataList 数据
* @param fileName excel下载显示的名字
*/
public static void exportToExcelByMouduel(HttpServletResponse response,
String filePath, List<Map<String, Object>> dataList,
String fileName) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ExcelUtil.createWorkBookByMouduel(filePath, dataList).write(os);
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 设置response参数,可以打开下载页面
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ new String((fileName + ".xls").getBytes(), "iso-8859-1"));
ServletOutputStream out = response.getOutputStream();
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
} catch (IOException e) {
} }
} }
3.ExcelUtil 操作excel工具类
package com.esstglobal.service.utils; import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; /**
* 导出Excel文档工具类
*
* @date 2014-8-6
* */
public class ExcelUtil { /**
* 创建excel文档,
*
* @param listMap
* 表头
* @param dataList
* 数据 (Map<String,Object> 中key 要与导出的顺序对应 可以放key:1,23或a,b,c)
* @param columnNames
* excel的列名
* */
public static Workbook createWorkBook(List<String> listMap,
List<Map<String, Object>> dataList) {
// 数据
List<List<String>> listData = new ArrayList<List<String>>();// 将数据装成list<list<>>
// 形式
for (int i = 0; i < dataList.size(); i++) {
Map<String, Object> map = dataList.get(i);
Set<String> set = map.keySet();
List<String> list2 = new ArrayList<String>();
for (String key : set) {
list2.add(map.get(key) == null ? "" : map.get(key) + "");
}
listData.add(list2);
}
// 创建excel工作簿
Workbook wb = new HSSFWorkbook();
// 创建第一个sheet(页),并命名
Sheet sheet = wb.createSheet("数据");
// 手动设置列宽。第一个参数表示要为第几列设;,第二个参数表示列的宽度,n为列高的像素数。
/*
* for(int i=0;i<keys.length;i++){ sheet.setColumnWidth((short) i,
* (short) (35.7 * 150)); }
*/ // 创建第一行
Row row = sheet.createRow((short) 0); // 创建两种单元格格式
CellStyle cs = wb.createCellStyle();
CellStyle cs2 = wb.createCellStyle(); // 创建两种字体
Font f = wb.createFont();
Font f2 = wb.createFont(); // 创建第一种字体样式(用于列名)
f.setFontHeightInPoints((short) 10);
f.setColor(IndexedColors.BLACK.getIndex());
f.setBoldweight(Font.BOLDWEIGHT_BOLD); // 创建第二种字体样式(用于值)
f2.setFontHeightInPoints((short) 10);
f2.setColor(IndexedColors.BLACK.getIndex()); // Font f3=wb.createFont();
// f3.setFontHeightInPoints((short) 10);
// f3.setColor(IndexedColors.RED.getIndex()); // 设置第一种单元格的样式(用于列名)
cs.setFont(f);
cs.setBorderLeft(CellStyle.BORDER_THIN);
cs.setBorderRight(CellStyle.BORDER_THIN);
cs.setBorderTop(CellStyle.BORDER_THIN);
cs.setBorderBottom(CellStyle.BORDER_THIN);
cs.setAlignment(CellStyle.ALIGN_CENTER); // 设置第二种单元格的样式(用于值)
cs2.setFont(f2);
cs2.setBorderLeft(CellStyle.BORDER_THIN);
cs2.setBorderRight(CellStyle.BORDER_THIN);
cs2.setBorderTop(CellStyle.BORDER_THIN);
cs2.setBorderBottom(CellStyle.BORDER_THIN);
cs2.setAlignment(CellStyle.ALIGN_CENTER);
// 设置列名
for (int i = 0; i < listMap.size(); i++) {
Cell cell = row.createCell(i);
cell.setCellValue(listMap.get(i));
cell.setCellStyle(cs);
}
// 设置每行每列的值
for (int i = 0; i < listData.size(); i++) {
// Row 行,Cell 方格 , Row 和 Cell 都是从0开始计数的
// 创建一行,在页sheet上
Row row1 = sheet.createRow(i + 1);
// 在row行上创建一个方格 for (int j = 0; j < listData.get(i).size(); j++) {
Cell cell = row1.createCell(j);
String value = listData.get(i).get(j) == null ? ""
: (String) listData.get(i).get(j);
cell.setCellValue(value);
cell.setCellStyle(cs2);
}
}
return wb; } /**
* 通过模板导出数据
*
* @param listMap
* 表头
* @param dataList
* 数据
* @param columnNames
* excel的列名
* @throws IOException
* */
public static Workbook createWorkBookByMouduel(String filePath,
List<Map<String, Object>> dataList) throws IOException {
// 数据
List<List<String>> listData = new ArrayList<List<String>>();// 将数据装成list<list<>>
// 形式
for (int i = 0; i < dataList.size(); i++) {
Map<String, Object> map = dataList.get(i);
Set<String> set = map.keySet();
List<String> list2 = new ArrayList<String>();
for (String key : set) {
list2.add(map.get(key) == null ? "" : map.get(key) + "");
}
listData.add(list2);
}
// 创建excel工作簿
InputStream in = new FileInputStream(new java.io.File(filePath));
Workbook wb = new HSSFWorkbook(in);
Sheet sheet = wb.getSheetAt(0);
// 创建单元格格式
CellStyle cs2 = wb.createCellStyle();
// 创建字体格式
Font f2 = wb.createFont();
// 创建第二种字体样式(用于值)
f2.setFontHeightInPoints((short) 10);
f2.setColor(IndexedColors.BLACK.getIndex()); // Font f3=wb.createFont();
// f3.setFontHeightInPoints((short) 10);
// f3.setColor(IndexedColors.RED.getIndex());
// 设置第二种单元格的样式(用于值)
cs2.setFont(f2);
cs2.setBorderLeft(CellStyle.BORDER_THIN);
cs2.setBorderRight(CellStyle.BORDER_THIN);
cs2.setBorderTop(CellStyle.BORDER_THIN);
cs2.setBorderBottom(CellStyle.BORDER_THIN);
cs2.setAlignment(CellStyle.ALIGN_CENTER);
// 设置每行每列的值
int totalRow = sheet.getLastRowNum();
for (int i = 0; i < listData.size(); i++) {
// Row 行,Cell 方格 , Row 和 Cell 都是从0开始计数的
// 创建一行,在页sheet上
Row row1 = sheet.createRow(i + totalRow + 1);
// 在row行上创建一个方格
for (int j = 0; j < listData.get(i).size(); j++) {
Cell cell = row1.createCell(j);
String value = listData.get(i).get(j) == null ? ""
: (String) listData.get(i).get(j);
cell.setCellValue(value);
cell.setCellStyle(cs2);
}
}
return wb; } /**
* @Description 获取cell中的值
* @author 张洋
* @date 2017年4月7日 下午3:48:59
* @param cell
* @return
*/
public static String getValue(Cell cell) {
String value = "";
if (null == cell) {
return value;
}
switch (cell.getCellType()) {
// 数值型
case Cell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是date类型则 ,获取该cell的date值
Date date = HSSFDateUtil
.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
value = format.format(date);
;
} else {// 纯数字
BigDecimal big = new BigDecimal(cell.getNumericCellValue());
value = big.toString();
// 解决1234.0 去掉后面的.0
if (null != value && !"".equals(value.trim())) {
String[] item = value.split("[.]");
if (1 < item.length && "0".equals(item[1])) {
value = item[0];
}
}
}
break;
// 字符串类型
case Cell.CELL_TYPE_STRING:
value = cell.getStringCellValue().toString();
break;
// 公式类型
case Cell.CELL_TYPE_FORMULA:
// 读公式计算值
value = String.valueOf(cell.getNumericCellValue());
if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
value = cell.getStringCellValue().toString();
}
break;
// 布尔类型
case Cell.CELL_TYPE_BOOLEAN:
value = " " + cell.getBooleanCellValue();
break;
// 空值
case Cell.CELL_TYPE_BLANK:
value = "";
// LogUtil.getLogger().error("excel出现空值");
break;
// 故障
case Cell.CELL_TYPE_ERROR:
value = "";
// LogUtil.getLogger().error("excel出现故障");
break;
default:
value = cell.getStringCellValue().toString();
}
if ("null".endsWith(value.trim())) {
value = "";
}
return value;
}
}
4.导入excell
/**
* @Description 导入数据
* @author 张洋
* @date 2017年4月5日 上午10:44:24
* @param param
* @param request
* @param response
* @return
* @throws ParseException
* @throws IOException
* @throws Exception
*/
@Override
public ReturnBean<Map<String, Object>> upload(Map<String, Object> param,
HttpServletRequest request, HttpServletResponse response)
throws ParseException, IOException {
ReturnBean<Map<String, Object>> returnBean = new ReturnBean<Map<String, Object>>();
multipartRequest = (MultipartHttpServletRequest) request;
// 得到上传的文件
mFiles = multipartRequest.getFiles("file");
String corpId = (String) request.getSession().getAttribute("corpId");
if (mFiles != null && mFiles.size() > 0) {
MultipartFile mFile = mFiles.get(0);
List<RiskEnvironment> listData = new ArrayList<RiskEnvironment>();// 所有添加的数据
InputStream fileIn = mFile.getInputStream();
// 根据指定的文件输入流导入Excel从而产生Workbook对象
Workbook wb0 = new HSSFWorkbook(fileIn);
// 获取Excel文档中的第一个表单
Sheet sht0 = wb0.getSheetAt(0);
if (sht0.getPhysicalNumberOfRows() <= 3) {
fileIn.close();
returnBean.setErrorInfo("Excell中无数据");
returnBean.setReturnCode(ReturnCode.EXCELL_DATA_NULL_ERROR);
return returnBean;
}
if (sht0.getRow(0).getPhysicalNumberOfCells() != 21) {
fileIn.close();
returnBean.setErrorInfo("Excell格式与模板不符");
returnBean.setReturnCode(ReturnCode.EXCELL_MOUDUEL_ERROR);
return returnBean;
}
// 对Sheet中的每一行进行迭代
List<Map<String, String>> listError = new ArrayList<Map<String, String>>();
for (Row r : sht0) {// 如果当前行的行号(从0开始)未达到2(第三行)则从新循环
if (r.getRowNum() < 3) {
continue;
}
// 创建实体类
RiskEnvironment healthRisk = new RiskEnvironment();
// 取出当前行第1个单元格数据,并封装在info实体stuName属性上
healthRisk.setCorpId(corpId);// 公司id
healthRisk.setId(Utils.randomUUID());
healthRisk.setCreateTime(new Timestamp(System
.currentTimeMillis()));
healthRisk.setSort(this.getSort());
User user = (User) request.getSession()
.getAttribute("userInfo");
healthRisk.setCreateUid(user.getId());
healthRisk.setTouchTime1("");
healthRisk.setNote("");
healthRisk.setType(""); deptService.selectByCondition(param);
// healthRisk.setDeptId(user.getDeptId());
healthRisk.setState("0");
// 赋值
int i = 0;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {// 部门填写id
healthRisk.setType(ExcelUtil.getValue(r.getCell(i)));
listError.add(FileDataUtil.getErrorMap("必填项",
r.getRowNum(), i, ""));
} else {
String deptId = ExcelUtil.getValue(r.getCell(i));
Dept dept = deptService.selectById(deptId);
if (dept == null) {
listError.add(FileDataUtil.getErrorMap("数据错误",
r.getRowNum(), i, ""));
} else {
healthRisk.setDeptId(deptId);
}
}
;
i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {// 区域填写id(逗号分隔)
healthRisk.setType(ExcelUtil.getValue(r.getCell(i)));
listError.add(FileDataUtil.getErrorMap("必填项",
r.getRowNum(), i, ""));
} else {
String district = ExcelUtil.getValue(r.getCell(i));
String[] districts = district.split(";");
for (int j = 0; j < districts.length; j++) {
DictionaryData dictionary = dictService
.selectById(districts[j]);
if (dictionary == null) {
listError.add(FileDataUtil.getErrorMap("数据错误",
r.getRowNum(), i, ""));
}
}
healthRisk.setDistrict(district.replaceAll(";",","));
}
i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {// 危害类别id
healthRisk.setTypeHarm(ExcelUtil.getValue(r.getCell(i)));
listError.add(FileDataUtil.getErrorMap("必填项",
r.getRowNum(), i, ""));
} else {
String typeHarm = ExcelUtil.getValue(r.getCell(i));
DictionaryData dictionary = dictService
.selectById(typeHarm);
if (dictionary == null) {
listError.add(FileDataUtil.getErrorMap("数据错误",
r.getRowNum(), i, ""));
} else {
healthRisk
.setTypeHarm(ExcelUtil.getValue(r.getCell(i)));
} }
i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {// 危害因素id
healthRisk.setTypeHarm(ExcelUtil.getValue(r.getCell(i)));
listError.add(FileDataUtil.getErrorMap("必填项",
r.getRowNum(), i, ""));
} else {
String typeHarm = ExcelUtil.getValue(r.getCell(i));
DictionaryData dictionary = dictService
.selectById(typeHarm);
if (dictionary == null) {
listError.add(FileDataUtil.getErrorMap("数据错误",
r.getRowNum(), i, ""));
} else {
healthRisk.setHarmElement(ExcelUtil.getValue(r
.getCell(i)));
} }
; i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {// 危害分布、特性及生产风险条件
healthRisk.setHarmRequirement(ExcelUtil.getValue(r
.getCell(i)));
listError.add(FileDataUtil.getErrorMap("必填项",
r.getRowNum(), i, ""));
} else {
healthRisk.setHarmRequirement(ExcelUtil.getValue(r
.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setConsequence(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setHarmKind(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setHarmScop(ExcelUtil.getValue(r.getCell(i)));
}
i++;
healthRisk.setPersonOtherInfo(ExcelUtil.getValue(r.getCell(i)));
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setControlMeasures(ExcelUtil.getValue(r
.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
String resultValue = ExcelUtil.getValue(r.getCell(i));
if (RegexUtils.checkInteger(resultValue)
|| RegexUtils.checkFload(resultValue)) {
healthRisk.setResultValue(resultValue);
} else {
listError.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i, "1,2,3"));
} }
;
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
String expose = ExcelUtil.getValue(r.getCell(i));
if (RegexUtils.checkInteger(expose)
|| RegexUtils.checkFload(expose)) {
healthRisk.setExpose(expose);
} else {
listError.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i, "1,2,3"));
}
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
String possibility = ExcelUtil.getValue(r.getCell(i));
if (RegexUtils.checkInteger(possibility)
|| RegexUtils.checkFload(possibility)) {
healthRisk.setPossibility(possibility);
} else {
listError.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i, "1,2,3"));
}
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
String riskValue = ExcelUtil.getValue(r.getCell(i));
if (RegexUtils.checkInteger(riskValue)
|| RegexUtils.checkFload(riskValue)) {
healthRisk
.setRiskValue(ExcelUtil.getValue(r.getCell(i)));
} else {
listError.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i, "1,2,3"));
}
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setRiskLevel(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk
.setAcceptMeasure(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setMeasureValidity(ExcelUtil.getValue(r
.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setMeasureCost(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (!Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk
.setMeasureResult(ExcelUtil.getValue(r.getCell(i)));
}
i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setTakeIsno("0");//
} else {
if ("是".equals(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setTakeIsno("1");
} else if ("否".equals(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setTakeIsno("0");
} else {
listError.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i, "格式:是或否"));
// healthRisk.setTakeIsno(r.getCell(i)));
}
}
i++;
if (Utils.isEmpty(ExcelUtil.getValue(r.getCell(i)))) {
healthRisk.setAnalysisState("0");
} else {
if (RegexUtils.checkDay(ExcelUtil.getValue(r.getCell(i)))) {
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(ExcelUtil.getValue(r.getCell(i)));
healthRisk
.setAnalysisDate(new Timestamp(date.getTime()));
healthRisk.setAnalysisState("1");
} else {
listError
.add(FileDataUtil.getErrorMap("格式错误",
r.getRowNum(), i,
"格式:yyyy-MM-dd HH:mm:ss(例:2008-01-01 13:00:00)"));
} }
listData.add(healthRisk);
}
fileIn.close();
if (listError.size() > 0) {
returnBean.setReturnCode(ReturnCode.EXCELL_UPLOAD_ERROR);
returnBean.setErrorInfo(listError);
} else {
if (environmentRiskDao.insertList(listData) > 0) {
returnBean.setReturnCode(ReturnCode.SUCCESS);
}
;
} }
return returnBean;
}
excell 导入 导出的更多相关文章
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- ITTC数据挖掘平台介绍(五) 数据导入导出向导和报告生成
一. 前言 经过了一个多月的努力,软件系统又添加了不少新功能.这些功能包括非常实用的数据导入导出,对触摸进行优化的画布和画笔工具,以及对一些智能分析的报告生成模块等.进一步加强了平台系统级的功能. 马 ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- Oracle 数据库导入导出 dmp文件
转自: http://hi.baidu.com/ooofcu/blog/item/ec5d1f9580d41f007af48077.html 首先询问对方数据库的表空间名称和大小,然后在你的oracl ...
- Oracle导入导出
Oracle 10g 已经引入了数据泵(点击Data Dump)技术,这项技术和之前的exp/imp有哪些好处呢,简单的来说就是恢复和备份速度非常快: 在说明数据泵的使用方法之前,我们先来了解二者的区 ...
- csv表格处理(上)-- JS 与 PHP 协作导入导出
CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为“逗号分隔符文件”.在Excel中打开如下图左边所示,在记事本打开如下图右边 ...
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- excel的导入导出的实现
1.创建Book类,并编写set方法和get方法 package com.bean; public class Book { private int id; private String name; ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
随机推荐
- TraceWrite waittype
今天上午突然开发人员叫起来说数据库非常慢,马上连上数据查看. 使用sp_who2和下面脚本可以看到大量的TraceWrite 等待事件.我的第一反应就是有人启用的Profiler在生产服务器上抓数据了 ...
- 蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解
一直搞不太清楚蓝牙BLE协议,不知道LL层和L2CAP层是如何划分的,后来博士给我讲了讲就理解了,写下来,做个记录: 1. 我们知道,除了蓝牙5.1新出的CTE,所有的BLE都是如下类型的包: 对于连 ...
- 刷题防止Time Limit Exceeded(TLE)技巧
1.C++ 不要使用cin,cout,该使用scanf和printf 2.Java 不要使用Scanner,改用BufferedReader 3.Python 在文件开始的地方加入 import ps ...
- 显示mac电脑中隐藏的文件和文件夹
显示mac电脑中隐藏的文件和文件夹的办法:打开电脑,cd到相应的文件夹,输入以下命令,为显示隐藏的文件和文件夹 defaults write com.apple.finder AppleShowAll ...
- 工程命名为***&***出现的问题: LaunchScreen.xib: Line 20: EntityRef: expecting ';'
今天新建一个项目命名为28 & 29. extern&static, 然后cmd + R运行,居然碰到了编译错误. 当时就奇怪了,怎么会这样呢?报错内容如下: 开始还以为新安装的Xc ...
- 高考结束了,在门头沟有没有想学php建站的。
教你简单的html 教你文章后台管理 数据库管理及备份 编程工具的使用 如何找到你要学习的内容
- 在js中获取到的页面元素为undefined
在学习js的过程中发现了一个问题就是:在js代码中获取页面元素进行操作的时候发现怎么都没有效果,控制台也不报错,弹出获取的元素结果发现是undefined类型. 后来查找了资料发现:因为我的js是写在 ...
- mysql where 加 多个 或者条件
select * from table where id=1 and uid=2 and (status=2 or status=3 or status=4);
- python drf+xadmin+react+dva+react-native+sentry+nginx 搭建前后端分离的博客完整平台
前言: 经过差不多半年的开发,搭建从前端到服务器,实现了前后端分离的一个集PC端.移动端的多端应用,实属不易,今天得空,好好写篇文章,记录这些天的成果.同时也做个分享. 演示网站地址: http:// ...
- windows用交互式命令执行python程序
1.进入cmd命令 windows+r2.进入盘符,eg:E:3.使用dir命令查看当前文件夹下的所有目录4.使用绝对路径或者相对路径和cd命令直接进入想要到达的文件夹目录(或者使用cd命令一步一步达 ...