/**
*
*/
package c123;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @author Administrator
*
*/
public class ReadExcelToMaps {
/**
* @MethodName: menglei
* @Time:2012-3-1 下午4:06:45
* @Description:文件路径 得到 excel Mpa数组
* @param:文件File 所需字段
* @return:
* @throws:
*/
public Map<String, String>[] getMapsFExcel(String filePath,String[]fileds)throws IOException{
Boolean isFile=filePath.endsWith(".xlsx");
File file = new File(filePath);
Map<String, String>[] maps=null;
if(isFile){
maps=getMapsFExcel_XLSX_2007(file, fileds); // 获取工作薄个数
}else {
maps=getMapsFExcel_XLSX_2003(file, fileds);
}
return maps;
}
/**
* @MethodName: menglei
* @Time:2012-3-1 下午4:06:45
* @Description:由excel2003文件 得到 excel Mpa数组
* @param:文件File 所需字段
* @return:
* @throws:
*/
public Map<String, String>[] getMapsFExcel_XLSX_2003 (File file,String[]fileds) throws IOException{
FileInputStream fileInputStream= new FileInputStream(file);
return getMapsFExcel_XLS_2003(fileInputStream, fileds);
}
/**
* @MethodName: menglei
* @Time:2012-3-1 下午4:06:45
* @Description:由excel2007文件 得到 excel Mpa数组
* @param:文件File 所需字段
* @return:
* @throws:
*/
public Map<String, String>[] getMapsFExcel_XLSX_2007 (File file,String[]fileds) throws IOException{
FileInputStream fileInputStream= new FileInputStream(file);
return getMapsFExcel_XLSX_2007(fileInputStream, fileds);
}
/**
* @MethodName: menglei
* @Time:2012-3-1 下午4:06:45
* @Description:由excel2007文件输入流 得到数据
* @param:文件如入流FileInputStream 所需字段
* @return:
* @throws:
*/
public Map<String, String>[] getMapsFExcel_XLSX_2007 (FileInputStream fileInputStream,String[]fileds ) throws IOException{
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Sheet sheet =null;
Workbook wb=null;
wb=new XSSFWorkbook(fileInputStream); //2007
sheet = (XSSFSheet) wb.getSheetAt(0);// 获取工作薄个数
int rowNum = sheet.getLastRowNum();// 获取工作薄行数
Row row =sheet.getRow(1);
//检测异常
try {
new Check(fileds, row);
} catch (CheckExceFiled e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
for (int i = 1; i <= rowNum; i++) {
Map<String, String> inPutlistMap= new LinkedHashMap<String, String>();
row = sheet.getRow(i);
int j = 0;
for (int k = 0; k < fileds.length; k++) {
Cell cell=row.getCell(j);
String cellValue="";
System.out.println(cell.getCellType());
if(cell.getCellType()==0){
cellValue=String.valueOf(cell.getNumericCellValue());
}else if(cell.getCellType()==1) {
cellValue= cell.getStringCellValue();
}else if(cell.getCellType()==3) {
cellValue="";
}
inPutlistMap.put(fileds[k].toString(), cellValue);
j++;
}
list.add(inPutlistMap);
}
fileInputStream.close();
Map<String,String>[] arr=list.toArray(new HashMap[list.size()]);
return arr;
}
/**
* @MethodName: menglei
* @Time:2012-3-1 下午4:06:45
* @Description:由excel2003文件输入流 得到数据
* @param:文件如入流FileInputStream 所需字段
* @return:
* @throws:
*/
public Map<String, String>[] getMapsFExcel_XLS_2003(FileInputStream fileInputStream,String[]fileds ) throws IOException{
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
POIFSFileSystem fs = new POIFSFileSystem(fileInputStream);
Sheet sheet =null;
Workbook wb=null;
wb= new HSSFWorkbook(fs);
sheet=(HSSFSheet)wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum();// 获取工作薄行数
Row row =sheet.getRow(1);
//检测异常
try {
new Check(fileds, row);
} catch (CheckExceFiled e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
for (int i = 1; i <= rowNum; i++) {
Map<String, String> inPutlistMap= new LinkedHashMap<String, String>();
row = sheet.getRow(i);
int j = 0;
for (int k = 0; k < fileds.length; k++) {
row.getLastCellNum();
Cell cell=row.getCell(j);
String cellValue="";
if(cell==null){
}else if(cell.getCellType()==0){
cellValue=String.valueOf(cell.getNumericCellValue());
}else if(cell.getCellType()==1) {
cellValue= cell.getStringCellValue();
}else if(cell.getCellType()==3) {
cellValue="";
}
inPutlistMap.put(fileds[k].toString(), cellValue);
j++;
}
list.add(inPutlistMap);
}
fileInputStream.close();
Map<String,String>[] arr=list.toArray(new HashMap[list.size()]);
return arr;
}
//自定义异常
class CheckExceFiled extends Exception{
public CheckExceFiled(String msg){
super(msg);
}
}
class Check {
public Check(String[]fields,Row row) throws CheckExceFiled {
// TODO Auto-generated constructor stub
for (String filed : fields) {
if(filed.trim().equals("")){
throw new CheckExceFiled("有为空的字段");//抛出异常
}
}
if (fields.length<=0) {
throw new CheckExceFiled("必须输入有效字段");//抛出异常
}
if(fields.length>row.getLastCellNum()){
throw new CheckExceFiled("输入的字段多于Excel表中每行数据");
}
}
}
}
分享到:
相关推荐
C# 基于winform读取excel并生成二维码的自用小工具
他们创建的这个工具虽然可能没有商业级产品的完善功能,但作为自用或分享给小范围用户,应该能满足基本的Excel到XML的转换需求。 标签中提到了“excel”、“xml”、“winform”和“C#”,这暗示了以下几点: 1. **...
全网独家,手写程序并测试,完美自用OCR程序,【批量处理OCR】【表格识别】【证件识别】功能都包含 -----【表格识别能够自动导出到电脑生成Excel文件 功能齐全,替换你的阿里服务 key 或者 appcode即可 【需要更改的...
自用简易xls文件上传转数据表加图功能(可传大文件) 意义:用于批量分离excel图片+数据表含图片路径,结果.zip格式下载 开发环境Linux Centos Nginx PHP7.1(应该支持:5.5-7.3) 核心读取使用phpexcel。反馈:15058593138...
7. **用户体验**:自用的桌面搜索可能具有简单的用户界面,允许用户输入查询、查看结果,并能快速打开找到的文件。界面友好性和易用性是提高用户满意度的关键因素。 综上所述,"自用的桌面搜索"项目结合了`Lucene...
函数作用:在Excel中加入一个量度尺(以寸为单位)...109 '108.函数作用:取得一个短文件名的长文件名.............111 '109.函数作用:取得临时文件名.........................112 '110.函数作用:等用Shell调用的程序...
如果"MFC自用"的代码库包含了与Parasolid的接口,那么这些函数可能涉及读取、写入Parasolid格式的文件,或者是将Parasolid模型数据转换为MFC可以处理的形式。 在压缩包中的"MFC-20130617.xls"文件,很可能是一个...
2. 文件操作:C#可以方便地操作文件和文件夹,如创建、读取、写入和删除文件,这在自动化办公中至关重要,例如批量处理Excel表格、Word文档或PDF文件。 3. 邮件集成:通过使用System.Net.Mail命名空间,C#可以发送...
六六自用模块.ec 六十四卦相.ec 共享平台(中文)2.0.ec 关于窗口.ec 关于菜单的一些修改操作.ec 关机管理.ec 关联.ec 关联数据库和新表格.ec 关联文件.ec 关联程序.ec 关闭窗口或进程.ec 内存专用模块.ec 内存优化....
六六自用 模块.ec 六十四卦相.ec 关于窗口.ec 关于菜单的一些修改操作.ec 关机管理.ec 关联.ec 关联 数据库和新表格.ec 关联文件.ec 关联程序.ec 关闭托盘图标.ec 关闭窗口或进程.ec 内存专用模块.ec 内 存优化.ec ...
⑤可以将数据库中的数据导出excel,并且在excel 文件中可正常显示; ⑥本次开源中,开源了自用的MDI模拟模块,实现了EXUI支持库模拟MDI风格显示(首次开源); ⑦因EXUI支持库中没有状态条,故用编辑框模拟实现了...
六六自用 模块.ec 六十四卦相.ec 关于窗口.ec 关于菜单的一些修改操作.ec 关机管理.ec 关联.ec 关联 数据库和新表格.ec 关联文件.ec 关联程序.ec 关闭托盘图标.ec 关闭窗口或进程.ec 内存专用模块.ec 内 存优化.ec ...
3. **读取PDF**:支持打开和读取PDF文件,提取文本、图像和元数据,以及检查文档的安全性。 4. **转换PDF**:能够将PDF文档转换成其他格式,如HTML、Word、Excel、图像等,反之亦然。 5. **签署PDF**:允许用户在...
六六自用模块.ec 六十四卦相.ec 关于窗口.ec 关于菜单的一些修改操作.ec 关机管理.ec 关联.ec 关联数据库和新表格.ec 关联文件.ec 关联程序.ec 关闭窗口或进程.ec 内存专用模块.ec 内存优化.ec 内存...
1. **数据处理**:脚本可能涉及到读取和处理CSV、JSON、Excel等格式的数据,使用pandas库进行数据清洗、分析和可视化。 2. **文件操作**:可能有脚本用于文件的复制、移动、重命名、查找和批量处理,利用Python内置...