2022-11-14 05:53来源:m.sf1369.com作者:宇宇
使用pl/sqldeveloper可以完成1、控制面板-->管理工具-->数据源(ODBC)-->添加-->选择驱动*.xls-->完成-->选择你的excel表格2、pl/sql-->tools-->ODBCImporterDataFromODBC标签页:DSN选择刚刚添加的数据源,点击connectDataToOracle标签页:选择对应的表3、点击Import,可以完成导入需要注意的是,excel中列的顺序和数据库表的字段顺序最好保持一致,excel列的标题和字段名称保持一致,这样导入的时候,会自动匹配。
首先你要明白导入文件步骤:
1.实例化excel读取对象
2.加载excel文件
全部加载
选择加载
3.读取excel文件
全部读取
逐行读取
以下你看看那个更加适应你
顺便列出几个其他语言导入Excel文件,希望对你有帮助
PHP导入Excel文件
java把Excel文件数据导入数据库
PHP实现导出Excel文件通用方法
JXL生成的excel文件+JAVA文件下载功能
Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载
java处理Excel文件---excel文件的创建,删除,写入,读取
Java读取Excel文件
jxl解析Excel文件
JXL操作Excel文件
java POI读取Excel文件
java使用poi读取excel文件代码示例
用jxl生成Excel文件
PHP验证码文件类
PHP 下载远程文件
PHP获取远程文件的大小
php压缩CSS文件
PHP强制下载文件
php读取csv文件类
php 简单ftp文件上传范例
一个php 生成zip文件的类
利用poi操作excel。同一个workbook 中创建的 cellstyle 不能超过4000 。估计你是遍历单元格创建生成的吧?可考虑创建map集合缓存必要cellstyle格式。已存在格式直接设置使用,不存在的再创建。一般情况下,一个workbook中使用到的cellstyle格式不会超过500!
首先要导入spring相关包,poi,和fileupload包,我是使用maven构建的。
一.导入excel
(1)使用spring上传文件
a.前台页面提交
<form name="excelImportForm" action="${pageContext.request.contextPath}/brand/importBrandSort" method="post" onsubmit="return checkImportPath();" enctype="multipart/form-data" id="excelImportForm">
<input type="hidden" name="ids" id="ids">
<div >
<div >
<label ><input id="excel_file" type="file" name="filename" accept="xls"/></label>
<div >
<input id="excel_button" type="submit" value="导入Excel"/>
</div>
</div>
</div>
<div >
<button type="button" data-dismiss="modal" onClick="uncheckBoxes();">取消</button>
</div>
b.后台spring的controller进行相关操作,这里主要讲的是使用spring上传文件,和读取文件信息。
使用spring上传文件之前,需要配置bean。
<bean id="multipartResolver" ></bean>@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ModelAndView importBrandSort(@RequestParam("filename") MultipartFile file,
HttpServletRequest request,HttpServletResponse response) throws Exception {
String temp = request.getSession().getServletContext()
.getRealPath(File.separator)
+ "temp"; // 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(10 * 1024 * 1024); // 设置允许用户上传文件大小,单位:位
fu.setSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:位
fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
// 开始读取上传信息
//
int index = 0;
/* List fileItems = null;
try {
fileItems = fu.parseRequest(request);
}
catch (Exception e) {
e.printStackTrace();
}
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
FileItem fileItem = null;
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
fileItem = item;
// index++;
}
}
if (fileItem == null)
return null;
*/
if (file == null)
return null;
logger.info(file.getOriginalFilename());
String name = file.getOriginalFilename();// 获取上传文件名,包括路径
//name = name.substring(name.lastIndexOf("\\") + 1);// 从全路径中提取文件名
long size = file.getSize();
if ((name == null || name.equals("")) && size == 0)
return null;
InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);
// 改为人工刷新缓存KeyContextManager.clearPeriodCacheData(new
// PeriodDimensions());// 清理所有缓存
int count = BrandMobileInfos.size();
String strAlertMsg ="";
if(count!=0){
strAlertMsg= "成功导入" + count + "条!";
}else {
strAlertMsg = "导入失败!";
}
logger.info(strAlertMsg);
//request.setAttribute("brandPeriodSortList", BrandMobileInfos);
//request.setAttribute("strAlertMsg", strAlertMsg);
request.getSession().setAttribute("msg",strAlertMsg);
return get(request, response);
//return null;
}
代码中的注释部分是如果不使用spring的方式,如何拿到提交过来的文件名(需要是要apache的一些工具包),其实使用spring的也是一样,只是已经做好了封装,方便我们写代码。
代码中的后半部分是读取完上传文文件的信息和对数据库进行更新之后,输出到前台页面的信息。
上述代码中: InputStream in = file.getInputStream();
List<BrandMobileInfoEntity> BrandMobileInfos = brandService
.importBrandPeriodSort(in);读取excel的信息。
(2)使用poi读取excel
a.更新数据库
@Override
public List<BrandMobileInfoEntity> importBrandPeriodSort(InputStream in) throws Exception {
List<BrandMobileInfoEntity> brandMobileInfos = readBrandPeriodSorXls(in);
for (BrandMobileInfoEntity brandMobileInfo : brandMobileInfos) {
mapper.updateByConditions(brandMobileInfo);
}
return brandMobileInfos;
}
这部分是sevice层的代码,用于读取excel信息之后更新数据库数据,我这里是使用mybatis。定义一个类BrandMobileInfoEntity,用与保存excel表每一行的信息,而List< BrandMobileInfoEntity > 则保存了全部信息,利用这些信息对数据库进行更新。
b.读取excel信息
private List<BrandMobileInfoEntity> readBrandPeriodSorXls(InputStream is)
throws IOException, ParseException {
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
List<BrandMobileInfoEntity> brandMobileInfos = new ArrayList<BrandMobileInfoEntity>();
BrandMobileInfoEntity brandMobileInfo;
// 循环工作表Sheet
for (int numSheet = 0;
numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
brandMobileInfo = new BrandMobileInfoEntity();
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
for (int i = 0; i < hssfRow.getLastCellNum(); i++) {
HSSFCell brandIdHSSFCell = hssfRow.getCell(i);
if (i == 0) {
brandMobileInfo.setBrandId(Integer
.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 1) {
continue;
} else if (i == 2) {
brandMobileInfo.setMobileShowFrom(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 3) {
brandMobileInfo.setMobileShowTo(Integer.parseInt(getCellValue(brandIdHSSFCell)));
} else if (i == 4) {
brandMobileInfo.setSellMarkValue(getCellValue(brandIdHSSFCell));
} else if (i == 5) {
brandMobileInfo.setWarehouse(getCellValue(brandIdHSSFCell));
} else if (i ==
合并单元格换行方式跟普通单元格的换行方式一样,有两种方式,一个是设置自动换行,一个是设置强制换行,下面分别介绍。
1、自动换行。
选中合并单元格,右键设置单元格格式,在对齐命令中,选中自动换行。这样改变合并单元格的列宽,数据就跟随列宽的大小自动换行。
2、强制换行。
选中合并单元格,将光标放在需要换行的位置,按下alt+enter键,强制换行。强制换行的数据,不会因单元格列宽的大小而改变。
主功能区有:开始、插入、设计、页面布局、引用、邮件、审阅、视图八个主选项卡。
1、开始功能区
开始功能区中包括剪贴板、字体、段落、样式和编辑五个组,对应Word2003的“编辑”和“段落”菜单部分命令。
2、插入功能区
插入功能区包括页面、表格、插图、应用程序、媒体、链接、批注、页眉和页脚、文本和符号几个组,对应Word2003中“插入”菜单的部分命令,主要用于在Word2013文档中插入各种元素
3、设计功能区
设计功能区包括“文档格式”和“页面背景”两个分组,主要功能包括主题的选择和设置、设置水印、设置页面颜色和页面边框等项目
4、页面布局功能区
页面布局功能区包括页面设置、稿纸、段落、排列几个组,对应Word2003的“页面设置”菜单命令和“段落”菜单中的部分命令,用于帮助用户设置Word2013文档页面样式
5、引用功能区
引用功能区包括目录、脚注、引文与书目、题注、索引和引文目录几个组,用于实现在Word2013文档中插入目录等比较高级的功能
6、邮件功能区
邮件功能区区包括创建、开始邮件合并、编写和插入域、预览结果和完成几个组,该功能区的作用比较专一,专门用于在Word2013文档中进行邮件合并方面的操作
7、审阅功能区
审阅功能区包括校对、语言、中文简繁转换、批注、修订、更改、比较和保护几个组,主要用于对Word2013文档进行校对和修订等操作,适用于多人协作处理Word2013长文档
8、视图功能区
视图功能区包括文档视图、显示、显示比例、窗口和宏几个组,主要用于帮助用户设置Word2013操作窗口的视图类型,以方便操作。
扩展资料:
格式
MicrosoftWordX(MacOSX)
MicrosoftWord在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word文件(.doc)成为事实上最通用的标准。Word文件格式的详细资料并不对外公开。
Word文件格式不只一种,因为随Word软件本身的更新,文件格式也会或多或少的改版,新版的格式不一定能被旧版的程序读取(大致上是因为旧版并未内建支援新版格式的能力)。
微软已经详细公布Word97的DOC格式,但是较新的版本资料仍未公开,只有公司内部、政府与研究机构能够获知。业界传闻说某些Word文件格式的特性甚至连微软自己都不清楚。
其他与Word竞争的办公室作业软件,都必须支援事实上最通用的Word专用的档案格式。因为Word文件格式的详细资料并不对外公开,通常这种兼容性是藉由逆向工程来达成。
许多文字处理器都有汇出、汇入Word档案专用的转换工具,譬如AbiWord或OpenOffice。
ApacheJakartaPOI是一个开放原始码的Java数据库,其主要目标是存取Word的二进制文件格式。不久前,微软自己也提供了检视器,能够不用Word程序就检视Word文件。例:WordViewer2003。