![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 10.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam
topic to moje pytanie wiec jak to zrobic najlepiej ? poprzez skrypt php czy poprzez program do edycji baz np MySQL Front ? pozdrawiam Induss |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Wyexportować dane jako csv i później zaimportować je tak do mysqla.
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 10.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
W sumie najlepiejby to bylo gdyby byl to skrypt uploadujacy
plik na serwer a nastepnie sam uaktualniajacy dane na serwerze bedzie to np skrypt ze stanami magazynowymi gdzie tabela wyglada tak: <id_tow> <stan_tow> przy czym aktualizowane bedzie pole <stan_tow> dzieki Pozdrawiam indus |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
ha! wlasnie pisze cos podobnego ale w asp.net
Jako, ze export do CVSa musial b sie wiazac z tym, ze magazynierzy musieli by sami zapisac w takim formacie zrobilem to inaczej. Wzucany jest plik przez uploada i za pomoca klasy, ktora uzywa ODBC pobieram dane z Excela. Oto ta klasa (C#): Kod using System; using System.Data; using System.Data.OleDb; namespace PCdev.Office { /// <summary> /// ExcelReader - Klasa czytajaca dane z pliku Excela. /// </summary> public class ExcelReader : IDisposable { private int[] _PKCol; private string _strExcelFilename; private bool _blnMixedData=true; private bool _blnHeaders=false; private string _strSheetName; private string _strSheetRange; private bool _blnKeepConnectionOpen=false; private OleDbConnection _oleConn; private OleDbCommand _oleCmdSelect; private OleDbCommand _oleCmdUpdate; public int[] PKCols { get {return _PKCol;} set {_PKCol=value;} } public string ColName(int intCol) { string sColName=""; if (intCol<26) sColName= Convert.ToString(Convert.ToChar((Convert.ToByte((char) 'A')+intCol)) ); else { int intFirst = ((int) intCol / 26); int intSecond = ((int) intCol % 26); sColName= Convert.ToString(Convert.ToByte((char) 'A')+intFirst); sColName += Convert.ToString(Convert.ToByte((char) 'A')+intSecond); } return sColName; } public int ColNumber(string strCol) { strCol = strCol.ToUpper(); int intColNumber=0; if (strCol.Length>1) { intColNumber = Convert.ToInt16(Convert.ToByte(strCol[1])-65); intColNumber += Convert.ToInt16(Convert.ToByte(strCol[1])-64)*26; } else intColNumber = Convert.ToInt16(Convert.ToByte(strCol[0])-65); return intColNumber; } public String[] GetExcelSheetNames() { System.Data.DataTable dt = null; try { if (_oleConn ==null) Open(); // Get the data table containing the schema dt = _oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if(dt == null) { return null; } String[] excelSheets = new String[dt.Rows.Count]; int i = 0; // Add the sheet name to the string array. foreach(DataRow row in dt.Rows) { string strSheetTableName = row["TABLE_NAME"].ToString(); excelSheets[i] = strSheetTableName.Substring(0,strSheetTableName.Length-1); i++; } return excelSheets; } catch(Exception) { return null; } finally { // Clean up. if(this.KeepConnectionOpen==false) { this.Close(); } if(dt != null) { dt.Dispose(); dt=null; } } } public string ExcelFilename { get { return _strExcelFilename;} set { _strExcelFilename=value;} } public string SheetName { get { return _strSheetName;} set { _strSheetName=value;} } public string SheetRange { get {return _strSheetRange;} set { if (value.IndexOf(":")==-1) throw new Exception("Invalid range length"); _strSheetRange=value;} } public bool KeepConnectionOpen { get { return _blnKeepConnectionOpen;} set {_blnKeepConnectionOpen=value;} } public bool Headers { get { return _blnHeaders;} set { _blnHeaders=value;} } public bool MixedData { get {return _blnMixedData;} set {_blnMixedData=value;} } private string ExcelConnectionOptions() { string strOpts=""; if (this.MixedData ==true) strOpts += "Imex=2;"; if (this.Headers==true) strOpts += "HDR=Yes;"; else strOpts += "HDR=No;"; return strOpts; } private string ExcelConnection() { return @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=" + _strExcelFilename + ";" + @"Extended Properties=" + Convert.ToChar(34).ToString() + @"Excel 8.0;"+ ExcelConnectionOptions() + Convert.ToChar(34).ToString(); } public void Open() { try { if (_oleConn !=null) { if (_oleConn.State==ConnectionState.Open) { _oleConn.Close(); } _oleConn=null; } if (System.IO.File.Exists(_strExcelFilename)==false) { throw new Exception("Excel file " + _strExcelFilename + "could not be found."); } _oleConn = new OleDbConnection(ExcelConnection()); _oleConn.Open(); } catch (Exception ex) { throw ex; } } public void Close() { if (_oleConn !=null) { if (_oleConn.State != ConnectionState.Closed) _oleConn.Close(); _oleConn.Dispose(); _oleConn=null; } } private bool SetSheetQuerySelect() { try { if (_oleConn == null) { throw new Exception("Connection is unassigned or closed."); } if (_strSheetName.Length ==0) throw new Exception("Sheetname was not assigned."); _oleCmdSelect =new OleDbCommand( @"SELECT * FROM [" + _strSheetName + "$" + _strSheetRange + "]", _oleConn); return true; } catch (Exception ex) { throw ex; } } private string AddWithComma(string strSource,string strAdd) { if (strSource !="") strSource = strSource += ", "; return strSource + strAdd; } private string AddWithAnd(string strSource,string strAdd) { if (strSource !="") strSource = strSource += " and "; return strSource + strAdd; } private OleDbDataAdapter SetSheetQueryAdapter(DataTable dt) { // Deleting in Excel workbook is not possible //So this command is not defined try { if (_oleConn == null) { throw new Exception("Connection is unassigned or closed."); } if (_strSheetName.Length ==0) throw new Exception("Sheetname was not assigned."); if (PKCols == null) throw new Exception("Cannot update excel sheet with no primarykey set."); if (PKCols.Length<1) throw new Exception("Cannot update excel sheet with no primarykey set."); OleDbDataAdapter oleda = new OleDbDataAdapter(_oleCmdSelect); string strUpdate=""; string strInsertPar=""; string strInsert=""; string strWhere=""; for (int iPK=0;iPK<PKCols.Length;iPK++) { strWhere = AddWithAnd(strWhere,dt.Columns[iPK].ColumnName + "=?"); } strWhere =" Where "+strWhere; for (int iCol=0;iCol<dt.Columns.Count;iCol++) { strInsert= AddWithComma(strInsert,dt.Columns[iCol].ColumnName); strInsertPar= AddWithComma(strInsertPar,"?"); strUpdate= AddWithComma(strUpdate,dt.Columns[iCol].ColumnName)+"=?"; } string strTable = "["+ this.SheetName + "$" + this.SheetRange + "]"; strInsert = "INSERT INTO "+ strTable + "(" + strInsert +") Values (" + strInsertPar + ")"; strUpdate = "Update " + strTable + " Set " + strUpdate + strWhere; oleda.InsertCommand = new OleDbCommand(strInsert,_oleConn); oleda.UpdateCommand = new OleDbCommand(strUpdate,_oleConn); OleDbParameter oleParIns = null; OleDbParameter oleParUpd = null; for (int iCol=0;iCol<dt.Columns.Count;iCol++) { oleParIns = new OleDbParameter("?",dt.Columns[iCol].DataType.ToString()); oleParUpd = new OleDbParameter("?",dt.Columns[iCol].DataType.ToString()); oleParIns.SourceColumn =dt.Columns[iCol].ColumnName; oleParUpd.SourceColumn =dt.Columns[iCol].ColumnName; oleda.InsertCommand.Parameters.Add(oleParIns); oleda.UpdateCommand.Parameters.Add(oleParUpd); oleParIns=null; oleParUpd=null; } for (int iPK=0;iPK<PKCols.Length;iPK++) { oleParUpd = new OleDbParameter("?",dt.Columns[iPK].DataType.ToString()); oleParUpd.SourceColumn =dt.Columns[iPK].ColumnName; oleParUpd.SourceVersion = DataRowVersion.Original; oleda.UpdateCommand.Parameters.Add(oleParUpd); } return oleda; } catch (Exception ex) { throw ex; } } private bool SetSheetQuerySingelValUpdate(string strVal) { try { if (_oleConn == null) { throw new Exception("Connection is unassigned or closed."); } if (_strSheetName.Length ==0) throw new Exception("Sheetname was not assigned."); _oleCmdUpdate =new OleDbCommand( @" Update [" + _strSheetName + "$" + _strSheetRange + "] set F1=" + strVal, _oleConn); return true; } catch (Exception ex) { throw ex; } } public void SetPrimaryKey(int intCol) { _PKCol = new int[1] { intCol }; } public DataTable GetTable() { return GetTable("ExcelTable"); } private void SetPrimaryKey(DataTable dt) { try { if (PKCols!=null) { //set the primary key if (PKCols.Length>0) { DataColumn[] dc; dc = new DataColumn[PKCols.Length]; for (int i=0;i<PKCols.Length;i++) { dc[i] =dt.Columns[PKCols[i]]; } dt.PrimaryKey = dc; } } } catch (Exception ex) { throw ex; } } public DataTable GetTable(string strTableName) { try { //Open and query if (_oleConn ==null) Open(); if (_oleConn.State != ConnectionState.Open) throw new Exception("Connection cannot open error."); if (SetSheetQuerySelect()==false) return null; //Fill table OleDbDataAdapter oleAdapter = new OleDbDataAdapter(); oleAdapter.SelectCommand = _oleCmdSelect; DataTable dt = new DataTable(strTableName); oleAdapter.FillSchema(dt,SchemaType.Source); oleAdapter.Fill(dt); if (this.Headers ==false) { if (_strSheetRange.IndexOf(":")>0) { string FirstCol = _strSheetRange.Substring(0,_strSheetRange.IndexOf(":")-1); int intCol = this.ColNumber(FirstCol); for (int intI=0;intI<dt.Columns.Count;intI++) { dt.Columns[intI].Caption =ColName(intCol+intI); } } } SetPrimaryKey(dt); //Cannot delete rows in Excel workbook dt.DefaultView.AllowDelete =false; //Clean up _oleCmdSelect.Dispose(); _oleCmdSelect=null; oleAdapter.Dispose(); oleAdapter=null; if (KeepConnectionOpen==false) Close(); return dt; } catch (Exception ex) { throw ex; } } private void CheckPKExists(DataTable dt) { if (dt.PrimaryKey.Length==0) if (this.PKCols !=null) { SetPrimaryKey(dt); } else throw new Exception("Provide an primary key to the datatable"); } public DataTable SetTable(DataTable dt) { try { DataTable dtChanges = dt.GetChanges(); if (dtChanges == null) throw new Exception("There are no changes to be saved!"); CheckPKExists(dt); //Open and query if (_oleConn ==null) Open(); if (_oleConn.State != ConnectionState.Open) throw new Exception("Connection cannot open error."); if (SetSheetQuerySelect()==false) return null; //Fill table OleDbDataAdapter oleAdapter = SetSheetQueryAdapter(dtChanges); oleAdapter.Update(dtChanges); //Clean up _oleCmdSelect.Dispose(); _oleCmdSelect=null; oleAdapter.Dispose(); oleAdapter=null; if (KeepConnectionOpen==false) Close(); return dt; } catch (Exception ex) { throw ex; } } public void SetSingleCellRange(string strCell) { _strSheetRange = strCell + ":" + strCell; } public object GetValue(string strCell) { SetSingleCellRange(strCell); object objValue=null; //Open and query if (_oleConn ==null) Open(); if (_oleConn.State != ConnectionState.Open) throw new Exception("Connection is not open error."); if (SetSheetQuerySelect()==false) return null; objValue = _oleCmdSelect.ExecuteScalar(); _oleCmdSelect.Dispose(); _oleCmdSelect=null; if (KeepConnectionOpen==false) Close(); return objValue; } public void SetValue(string strCell,object objValue) { try { SetSingleCellRange(strCell); //Open and query if (_oleConn ==null) Open(); if (_oleConn.State != ConnectionState.Open) throw new Exception("Connection is not open error."); if (SetSheetQuerySingelValUpdate(objValue.ToString())==false) return; objValue = _oleCmdUpdate.ExecuteNonQuery(); _oleCmdUpdate.Dispose(); _oleCmdUpdate=null; if (KeepConnectionOpen==false) Close(); } catch (Exception ex) { throw ex; } finally { if (_oleCmdUpdate != null) { _oleCmdUpdate.Dispose(); _oleCmdUpdate=null; } } } public void Dispose() { if (_oleConn !=null) { _oleConn.Dispose(); _oleConn=null; } if (_oleCmdSelect!=null) { _oleCmdSelect.Dispose(); _oleCmdSelect=null; } // Dispose of remaining objects. } public ExcelReader() { } } } Moze sie przyda - szczegolnie tam gdzie jest polaczenie z Excelem. A tak tego uzywam (gdybys chcial przepisac to do php): Kod private void InsertExcelDatas( string filePath )
{ ExcelReader xlsReader = new ExcelReader(); xlsReader.ExcelFilename = filePath; xlsReader.Headers = true; xlsReader.MixedData = true; xlsReader.KeepConnectionOpen = false; xlsReader.SheetName = "Arkusz1"; // Nazwa arkusza z danymi DataTable xlsDataTable = xlsReader.GetTable(); xlsReader.Dispose(); xlsReader = null; OBMdb.OpenConnection(); for ( int i = 0; i < xlsDataTable.Rows.Count; i++ ) { OBMdb.AddMaterialToOperation((int)Session["operationID"], xlsDataTable.Rows[i].ItemArray[0].ToString(),xlsDataTable.Rows[i].ItemArray[2].ToString(), xlsDataTable.Rows[i].ItemArray[1].ToString(), Convert.ToInt32(xlsDataTable.Rows[i].ItemArray[3])); } OBMdb.CloseConnection(); // Ponowanie bindujemy dane do DataGrida // po dodaniu nowych danych DataGridBind(); } Ten post edytował Seth 14.01.2005, 11:26:46 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 10.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
ale na php ten kod nie zadziala
![]() moze jakies inne rozwiazanie ![]() pozdrawiam Indus |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:06 |