⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 word2db.java

📁 从word文档中提取数据
💻 JAVA
字号:
//package word2DB;

import jp.ne.so_net.ga2.no_ji.jcom.*;

import java.util.*;
import java.io.*;

public class Word2DB {
	private ArrayList paramColsName=new ArrayList();
	private ArrayList paramName=new ArrayList();
	private String[] paramer_colsName=null;
	private String[] paramer_value=null;

	private String UnitID="",ReactorID="";

	public void Word2DB(){
	}

	
	private void getParam(){
		try
		{
			paramColsName.clear();
			paramName.clear();
			
			Database database=new Database("config.properties");
			paramColsName.add("UnitID");
			paramColsName.add("ReactorID");
			paramColsName.add("ReactorIDinPlant");

			String StrSql="select * from [DailyWord2DB] where UnitID='"+UnitID+"'";
			HashResultSet rs=database.executeQuery(StrSql);
			if(rs!=null){
				while(rs.next()){
					paramColsName.add(rs.getString("paramColName"));
					paramName.add(rs.getString("paramName"));
				}
			}else{
				System.out.println("HashResultSet为空");
			}
			database.close();
		}
		catch (Exception e)
		{
			System.out.println(e.toString());
		}

	    Object[] paramer_col=(Object[])paramColsName.toArray();
		paramer_colsName=new String[paramer_col.length];
		for(int i=0;i<paramer_col.length;i++){
			paramer_colsName[i]=paramer_col[i].toString();
			//System.out.println(paramer_colsName[i]);
		}

		paramer_value=new String[paramer_col.length];
		paramer_value[0]=UnitID;
		paramer_value[1]=ReactorID;
		paramer_value[2]="";
	}
	
	public boolean Word2DB(String fileName){
		if(!getUnitID(fileName))
			return false;
       	getParam();
	    Object[] paramer_name=(Object[])paramName.toArray();
	    int parameCount=0; 
	    String data_name="";

		ReleaseManager rm = new ReleaseManager();
		try {
			IDispatch wdApp = new IDispatch(rm, "Word.Application");  // 
			wdApp.put("Visible", new Boolean(false));	//
			IDispatch wdDocuments = (IDispatch)wdApp.get("Documents");
			Object[] arglist1 = new Object[1];
			//String userdir = System.getProperty("user.dir");	//
			//arglist1[0] = userdir+"\\Q2-04-2-029.doc";
			arglist1[0]=fileName;
			IDispatch wdDocument = (IDispatch)wdDocuments.method("Open", arglist1);

			// 以段落为单位
			IDispatch wdParagraphs = (IDispatch)wdDocument.get("Paragraphs");
			int paragraph_count = ((Integer)wdParagraphs.get("Count")).intValue();
			Object[] index = new Object[1];
			for(int i=0; i<paragraph_count; i++) {
				index[0] = new Integer(i+1);		// COM
				IDispatch wdParagraph = (IDispatch)wdParagraphs.method("Item", index);
				IDispatch wdRange = (IDispatch)wdParagraph.get("Range");
				data_name = (String)wdRange.get("Text");
				if(data_name.indexOf(paramer_name[0].toString())>-1){
					paramer_value[3]=data_name;
					//System.out.println(data_name);
					break;
				}
			}
			if(paramer_value[3]!=null)
				paramer_value[3]=date_Str2num(paramer_value[3]);
			else{
				wdApp.method("Quit", null);
				System.out.println("解析Word过程中出错,不能解析报表日期.请修改CNNCDB中表DailyWord2DB前三条记录");
			}
		//解析运行参数		
			for(int parameIndex=1;parameIndex<paramer_name.length;parameIndex++){
				for(int dataCount=1;dataCount<paragraph_count;dataCount++){
					index[0] = new Integer(dataCount+1);		// COM
					IDispatch wdParagraph = (IDispatch)wdParagraphs.method("Item", index);
					IDispatch wdRange = (IDispatch)wdParagraph.get("Range");
					data_name = (String)wdRange.get("Text");
					if(data_name.startsWith(paramer_name[parameIndex].toString())){
						dataCount+=1;
						index[0] = new Integer(dataCount+1);		// COM
						wdParagraph = (IDispatch)wdParagraphs.method("Item", index);
						wdRange = (IDispatch)wdParagraph.get("Range");
						data_name=(String)wdRange.get("Text");
						paramer_value[parameIndex+3]=data_name.substring(0,data_name.length()-1);
						//System.out.println(paramer_name[parameIndex].toString()+":"+paramer_value[parameIndex+3]);
						break;
					}
				}
			}
			wdApp.method("Quit", null);
			Database database=new Database("config.properties");	
		//查询数据库
			String sqlStr=" select * from Daily where ";
			for(int i=0;i<3;i++)
				sqlStr=sqlStr+paramer_colsName[i]+"='"+paramer_value[i]+"' and ";
			sqlStr=sqlStr+paramer_colsName[3]+"='"+paramer_value[3]+"'";
			//System.out.println(sqlStr);
			HashResultSet RST=database.executeQuery(sqlStr);

		//插入数据库
			String insertSqlStr="insert into Daily(";
			if(!RST.next()){
				for (int i=0;i<paramer_colsName.length;i++)
					insertSqlStr=insertSqlStr+paramer_colsName[i]+",";
				insertSqlStr=insertSqlStr.substring(0,insertSqlStr.length()-1)+") values('";
				for(int i=0;i<paramer_value.length;i++)
					insertSqlStr=insertSqlStr+paramer_value[i]+"','";
				insertSqlStr=insertSqlStr.substring(0,insertSqlStr.length()-2)+")";
				//System.out.println(sqlStr);
				database.executeUpdate(insertSqlStr);
			}
			database.close();
		}
		catch(Exception e) {
			wdApp.method("Quit", null);
			e.printStackTrace(); }
		finally { rm.release(); }
		return true;
	}
	private String date_Str2num(String dateStr)
	{
	   String dateBase="○一二三四五六七八九";
	   String date_num="",date="";
	   int date_index=-1;	   
	   for(int n=0;n<dateStr.length();n++)
	   {
		date_num=dateStr.substring(n,n+1);	
		if(date_num.equals("十")&&date_index<0)
		{
			n++;
			date_num=dateStr.substring(n,n+1);	
			if(dateBase.indexOf(date_num)>-1)
			{
				date_index=10+dateBase.indexOf(date_num);
				date=date+String.valueOf(date_index);
			}
			else if(date_num.equals("年")||date_num.equals("月"))
				date=date+"10-";
		}
		else
		{ 
			date_index=dateBase.indexOf(date_num);		
			if(date_index>-1)
				date=date+String.valueOf(date_index);
			else if(date_num.equals("年")||date_num.equals("月"))
				date=date+"-";
		}
	   }
//	   return(java.sql.Date.valueOf(date));
//	   System.out.println(date);
	   return(date);
	}

	private boolean getUnitID(String fileName)
	{
		int data_index=-1,UnitID_index=-1,ReactorID_index=-1;
		data_index=fileName.indexOf("\\Q");
		if(data_index<0){
			System.out.println("文件名不规范,第一个字符必须是Q");
			return false;
		}
		else{
			UnitID_index=data_index+2;
			ReactorID_index=UnitID_index+5;
			UnitID=fileName.substring(UnitID_index,UnitID_index+1);
			ReactorID=fileName.substring(ReactorID_index,ReactorID_index+1);
			return true;
		}
//		System.out.println("UnitID:"+UnitID+"-----ReactorID:"+ReactorID);
	}

	public static void  main(String args[]){
		//String fileName_xml="D:\\jacob\\data\\Q3-04-1-001.doc";
		Word2DB word2DB=new Word2DB();
		//word2DB.xml2DB(fileName_xml,UnitID);
		//word2DB.word2xml(fileName_xml);
		word2DB.Word2DB(args[0]);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -