搜尋此網誌

2011年8月14日 星期日

excel 轉 datatable


 public DataTable ExcleToDt(String filePath)
{
   //filePath 檔案路徑
   //sheetName 預設工作表名稱
   string sheetName="Sheet1";
    int i;
    StreamWriter StreamWriterObj;
    OleDbConnection objConn ;
    DataTable dt;
    DataTable dt2=new DataTable() ;
    ArrayList ary=new ArrayList() ;
    try
    {
        DataSet myDataset=new DataSet(); 
        string strConn;
            
        //xls
         //strConn = "Provider='Microsoft.Jet.OLEDB.4.0';" + "Data Source='" + filePath + "';Extended 
         //Properties='Excel 8.0;IMEX=1;HDR=NO;'";
         //HDR=NO 表轉入後第一行為欄位名稱 主要是判斷該EXCEL欄位有無缺少
        //可讀xlsx
        strConn = "Provider='Microsoft.Ace.OleDb.12.0';" + "Data Source='" + filePath + "';Extended Properties='Excel      
       12.0;IMEX=1;HDR=NO;'";
       //使用可讀xlsx前需先下載安裝Microsoft Access Database Engine 2010 可轉散發套件
       //http://www.microsoft.com/downloads/zh-tw/details.aspx?familyid=C06B8369-60DD-4B64-A44B-  
      //84B371EDE16D&displaylang=zh-tw


         objConn = new OleDbConnection(strConn);
         objConn.Open();
         dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
         if (dt.Rows.Count >1)
        {
             foreach (DataRow row in dt.Rows)
             {
                  if (row["TABLE_NAME"].ToString().IndexOf("$") !=  -1 )
                 {
                     if (row["TABLE_NAME"].ToString().IndexOf("交付表格") != -1 || 
                     row["TABLE_NAME"].ToString().IndexOf("sheet1") != -1)
                     {
                          ary.Add(row["TABLE_NAME"]);
                      }
                  }
             }
             }
       sheetName = ary[0].ToString() ;
       OleDbDataAdapter myData =new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", 
       strConn); 
       myData.TableMappings.Add("Table", "ExcelTest");
       myData.Fill(myDataset);
       for (int ii  = 0 ;ii<= myDataset.Tables[0].Columns.Count - 1;ii++)
       {
             if (myDataset.Tables[0].Rows[0][ii].ToString() == string.Empty)
            {
                 break  ;
             }
             if (myDataset.Tables[0].Rows[0][ii].ToString()  == "EXCEL上的中文名稱1" )
            {
                 myDataset.Tables[0].Columns[ii].ColumnName = "AAA";
             }
            else if (myDataset.Tables[0].Rows[0][ii].ToString() == "EXCEL上的中文名稱1")
            {
                 myDataset.Tables[0].Columns[ii].ColumnName = "BBB";
             }
       }
       dt2 = myDataset.Tables[0];
       objConn.Close();
          
   }
   catch
   {
    }
    return dt2;
   }    

2011年8月10日 星期三

ASP.NET Oracel 資料庫的連結應用(新增修改刪除)


//無Transaction
int irow = 0;            
//連線資訊
OracleConnection cn = new    
OracleConnection(System.Configuration.ConfigurationManager.AppSettings["XXXX"]);
OracleCommand Cmd = new OracleCommand();          
Cmd.CommandText = SQL;
Cmd.Connection = cn;
cn.Open();          
try
   {
       irow = Cmd.ExecuteNonQuery();              
      cn.Close();
      if (irow != -1)
      {
           return true;
       }
       else
       {
           return false;
        }
    }
catch(Exception ex)
  {
      cn.Close();
      return false;
  }

//Transaction

 int irow = 0;
OracleConnection cn = new OracleConnection(System.Configuration.ConfigurationManager.AppSettings["XXX"]);
OracleCommand Cmd = new OracleCommand();
OracleTransaction objTransaction;
cn.Open();
Cmd.Connection = cn;          
objTransaction = cn.BeginTransaction(IsolationLevel.ReadCommitted);
Cmd.Transaction = objTransaction;
 try
  {
     Cmd.CommandText = SQL;
      irow = Cmd.ExecuteNonQuery();
      objTransaction.Commit();
      cn.Close();
      if (irow != -1)
         {
             return true;
         }
      else
        {
            return false;
        }
  }
  catch (Exception ex)
  {
      objTransaction.Rollback();
      cn.Close();
   }

2011年8月4日 星期四

ASP.NET Oracel 資料庫的連結應用(查詢)

為了怕下次開新專案又要重新寫一次~還是在這稍微記錄一下好了
web.config
<add key="ConnectionString" value="server=XXXX;data source=XXX;user    id=XXX;password=XXX"/>
程式方面
using System.Data.OracleClient;
using System.Data.OracleClient;


public DataSet SQlExecuteReader(string SQL)
{
  DataSet ds = new DataSet();
  try
  {
    OracleDataAdapter DReader = new OracleDataAdapter();
    OracleConnection cn = new  OracleConnection       
    (System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
    OracleCommand Cmd = new OracleCommand();
    Cmd.CommandText = SQL;
    Cmd.Connection = cn;
    cn.Open();
    DReader = new OracleDataAdapter(Cmd);
    cn.Close();
     DReader.Fill(ds);                
  }
  catch (Exception ex)
  {
      cn.Close(); 
  }
  return ds;
}


2011年8月3日 星期三

window server2008 檔案寫入權限設定

參考網址:
http://ashiang.blogspot.com/  
下的
有關IIS7.5 Application Pool Identity的設定

做法:
將需要可寫入的檔案案右鍵-->內容-->安全性-->編輯-->新增-->進階
選擇:NETWORK SERVICE
然後再給他修改跟寫入權限即可