{ 239 return false; 240 } 241 //$A1:IV65536 242 strSQL.Format(_T("CREATE TABLE [%s$A1:IV65536] ("), m_strName); 243 for (int i = 0; i < m_dwCols; ++i) 244 { 245 strSQL += _T("[") + m_ColHeaders.GetAt(i) +_T("]") + _T(" char(255), "); 246 } 247 strSQL.Delete(strSQL.GetLength()-2, 2); 248 strSQL += _T(")"); 249 try 250 { 251 m_Excel.m_db.ExecuteSQL(strSQL); 252 } 253 catch (CDBException* e) 254 { 255 return false; 256 } 257 UpdateCells(); 258 } 259 break; 260 261 case Add: 262 { 263 strSQL.Format(_T("CREATE TABLE [%s] ("), m_strName); 264 for (int i = 0; i < m_dwCols; ++i) 265 { 266 strSQL += _T("[") + m_ColHeaders.GetAt(i) +_T("]") + _T(" char(255), "); 267 } 268 strSQL.Delete(strSQL.GetLength()-2, 2); 269 strSQL += _T(")"); 270 try 271 { 272 m_Excel.m_db.ExecuteSQL(strSQL); 273 } 274 catch (CDBException* e) 275 { 276 return false; 277 } 278 UpdateCells(); 279 } 280 break; 281 282 case Delete: 283 { 284 strSQL.Format (_T("DROP TABLE [%s$A1:IV65536]"), m_strName); 285 try 286 { 287 m_Excel.m_db.ExecuteSQL(strSQL); 288 } 289 catch (CDBException* e) 290 { 291 return false; 292 } 293 } 294 break; 295 } 296 return true; 297} 298 299bool CODBCExcelSheet::UpdateCells() 300{ 301 CString strSQL, strSQLCol; 302 for (DWORD dwRow = 0, dwCol; dwRow < m_dwRows; ++dwRow) 303 { 304 strSQL.Format(_T("INSERT INTO [%s$A1:IV%d] ("), m_strName, dwRow+1); 305 for (dwCol = 0; dwCol < m_dwCols; ++dwCol) 306 { 307 strSQLCol.Format(_T("[%s], "), m_ColHeaders.GetAt(dwCol)); 308 strSQL += strSQLCol; 309 } 310 strSQL.Delete(strSQL.GetLength()-2, 2); 311 strSQL += _T(") VALUES ("); 312 for (dwCol = 0; dwCol < m_dwCols; ++dwCol) 313 { 314 strSQLCol.Format(_T("'%s', "), Cell(dwRow, dwCol)->GetText()); 315 strSQL += strSQLCol; 316 } 317 strSQL.Delete(strSQL.GetLength()-2, 2); 318 strSQL += _T(")"); 319 try 320 { 321 m_Excel.m_db.ExecuteSQL(strSQL); 322 } 323 catch (CDBException* e) 324 { 325 return false; 326 } 327 } 328 return true; 329} 330 331void CODBCExcelSheet::ResetCells() 332{ 333 for (DWORD dwRow = 0; dwRow < m_dwRows; ++dwRow) 334 { 335 for (DWORD dwCol = 0; dwCol < m_dwCols; ++dwCol) 336 { 337 m_Cells[dwRow][dwCol].Empty(); 338 } 339 } 340} 341 342//rowIndex >= 1 colIndex >= 0 343CODBCExcelCell* CODBCExcelSheet::Cell(UINT rowIndex, UINT colIndex) 344{ 345 if (rowIndex > 65535 || colIndex > 255) return 0; 346 if (colIndex >= m_dwCols) return 0; 347 348 if (rowIndex >= m_dwRows) 349 { 350 m_dwRows += 1; 351 m_Cells.resize(m_dwRows); 352 for (DWORD dwRow = 0; dwRow < m_dwRows; ++dwRow) 353 { 354 m_Cells[dwRow].resize(m_dwCols); 355 for (DWORD dwCol = 0; dwCol < m_dwCols; ++dwCol) 356 { 357 m_Cells[dwRow][dwCol].SetParent(this); 358 } 359 } 36 |