亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cspreadsheet.h

?? DNA分類
?? H
?? 第 1 頁 / 共 3 頁
字號:
			}
			catch(CDBException *e)
			{
				m_sLastError = e->m_strError;
				m_Database->Close();
				return false;
			}
			
			// Create new sheet
			m_stempSql.Format("CREATE TABLE [%s$A1:IV65536] (", m_sSheetName);
			for (int j = 0; j < m_aFieldNames.GetSize(); j++)
			{
				m_stempSql = m_stempSql + "[" + m_aFieldNames.GetAt(j) +"]" + " char(255), ";
			}
			m_stempSql.Delete(m_stempSql.GetLength()-2, 2);
			m_stempSql += ")";
		}
		else
		{
			// Create new sheet
			m_stempSql.Format("CREATE TABLE [%s] (", m_sSheetName);
			for (int i = 0; i < m_aFieldNames.GetSize(); i++)
			{
				m_stempSql = m_stempSql + "[" + m_aFieldNames.GetAt(i) +"]" + " char(255), ";
			}
			m_stempSql.Delete(m_stempSql.GetLength()-2, 2);
			m_stempSql += ")";
		}

		try
		{
			m_Database->ExecuteSQL(m_stempSql);
			if (!m_bAppend)
			{
				m_dTotalColumns = m_aFieldNames.GetSize();
				m_bAppend = true;
			}
		}
		catch(CDBException *e)
		{
			m_sLastError = e->m_strError;
			m_Database->Close();
			return false;
		}

		// Save changed data
		for (int k = 1; k < m_dTotalRows; k++)
		{
			ReadRow(m_atempArray, k+1);

			// Create Insert SQL
			m_stempSql.Format("INSERT INTO [%s$A1:IV%d] (", m_sSheetName, k);
			for (int i = 0; i < m_atempArray.GetSize(); i++)
			{
				m_stempString.Format("[%s], ", m_aFieldNames.GetAt(i));
				m_stempSql = m_stempSql + m_stempString;
			}
			m_stempSql.Delete(m_stempSql.GetLength()-2, 2);
			m_stempSql += ") VALUES (";
			for (int j = 0; j < m_atempArray.GetSize(); j++)
			{
				m_stempString.Format("'%s', ", m_atempArray.GetAt(j));
				m_stempSql = m_stempSql + m_stempString;
			}
			m_stempSql.Delete(m_stempSql.GetLength()-2, 2);
			m_stempSql += ")";

			// Add row
			try
			{
				m_Database->ExecuteSQL(m_stempSql);
			}
			catch(CDBException *e)
			{
				m_sLastError = e->m_strError;
				m_Database->Close();
				return false;
			}
		}
		m_Database->Close();
		m_bTransaction = false;
		return true;
	}
	else // if file is a text delimited file
	{
		try
		{
			CFile *File = NULL;
			File = new CFile(m_sFile, CFile::modeCreate | CFile::modeWrite  | CFile::shareDenyNone);
			if (File != NULL)
			{
				CArchive *Archive = NULL;
				Archive = new CArchive(File, CArchive::store);
				if (Archive != NULL)
				{
					for (int i = 0; i < m_aRows.GetSize(); i++)
					{
						Archive->WriteString(m_aRows.GetAt(i));
						Archive->WriteString("\r\n");
					}
					delete Archive;
					delete File;
					m_bTransaction = false;
					return true;
				}
				delete File;
			}
		}
		catch(...)
		{
		}
		m_sLastError = "Error writing file\n";
		return false;
	}
}

// Undo changes to spreadsheet
bool CSpreadSheet::RollBack()
{
	if (Open())
	{
		m_bTransaction = false;
		return true;
	}
	m_sLastError = "Error in returning to previous state\n";
	return false;
}

bool CSpreadSheet::Convert(CString SheetOrSeparator)
{
	// Prepare file
	m_stempString = m_sFile;
	m_stempString.Delete(m_stempString.GetLength()-4, 4);
	if (m_bExcel) // If file is an Excel spreadsheet
	{
		m_stempString += ".csv";
		CSpreadSheet tempSheet(m_stempString, SheetOrSeparator, false);
		
		// Stop convert if text delimited file exists
		if (tempSheet.GetTotalColumns() != 0)
		{
			return false;
		}

		tempSheet.BeginTransaction();

		for (int i = 1; i <= m_dTotalRows; i++)
		{
			if (!ReadRow(m_atempArray, i))
			{
				return false;
			}
			if (!tempSheet.AddRow(m_atempArray, i))
			{
				return false;
			}
		}
		if (!tempSheet.Commit())
		{
			return false;
		}
		return true;
	}
	else // if file is a text delimited file
	{
		m_stempString += ".xls";
		CSpreadSheet tempSheet(m_stempString, SheetOrSeparator, false);

		// Stop convert if Excel file exists
		if (tempSheet.GetTotalColumns() != 0)
		{
			return false;
		}

		GetFieldNames(m_atempArray);

		// Check for duplicate header row field
		bool duplicate = false;
		for (int i = 0; i < m_atempArray.GetSize(); i++)
		{
			for (int j = 0; j < m_atempArray.GetSize(); j++)
			{
				if ((i != j) && (m_atempArray.GetAt(i) == m_atempArray.GetAt(j)))
				{
					m_sLastError.Format("Duplicate header row field:%s\n", m_atempArray.GetAt(i));
					duplicate = true;
				}
			}
		}

		if (duplicate) // Create dummy header row
		{
			m_atempArray.RemoveAll();
			for (int k = 1; k <= m_dTotalColumns; k++)
			{
				m_stempString.Format("%d", k);
				m_atempArray.Add(m_stempString);
			}

			if (!tempSheet.AddHeaders(m_atempArray))
			{
				return false;
			}

			for (int l = 1; l <= m_dTotalRows; l++)
			{
				if (!ReadRow(m_atempArray, l))
				{
					return false;
				}
				if (!tempSheet.AddRow(m_atempArray, l+1))
				{
					return false;
				}
			}
			return true;
		}
		else
		{
			if (!tempSheet.AddHeaders(m_atempArray))
			{
				return false;
			}

			for (int l = 2; l <= m_dTotalRows; l++)
			{
				if (!ReadRow(m_atempArray, l))
				{
					return false;
				}
				if (!tempSheet.AddRow(m_atempArray, l))
				{
					return false;
				}
			}
			return true;
		}
	}
}

// Open a text delimited file for reading or writing
bool CSpreadSheet::Open()
{
	if (m_bExcel) // If file is an Excel spreadsheet
	{
		m_Database->OpenEx(m_sDsn, CDatabase::noOdbcDialog);

		// Open Sheet
		m_rSheet = new CRecordset( m_Database );
		m_sSql.Format("SELECT * FROM [%s$A1:IV65536]", m_sSheetName);
		try
		{
			m_rSheet->Open(CRecordset::forwardOnly, m_sSql, CRecordset::readOnly);
		}
		catch(...)
		{
			delete m_rSheet;
			m_rSheet = NULL;
			m_Database->Close();
			return false;
		}

		// Get number of columns
		m_dTotalColumns = m_rSheet->m_nResultCols;

		if (m_dTotalColumns != 0)
		{
			m_aRows.RemoveAll();
			m_stempString.Empty();
			m_bAppend = true;
			m_dTotalRows++; // Keep count of total number of rows
			
			// Get field names i.e header row
			for (int i = 0; i < m_dTotalColumns; i++)
			{
				m_stempSql = m_rSheet->m_rgODBCFieldInfos[i].m_strName;
				m_aFieldNames.Add(m_stempSql);

				// Join up all the columns into a string
				if (i != m_dTotalColumns-1) // Not last column
				{
					m_stempString = m_stempString + "\"" + m_stempSql + "\"" + m_sSeparator;
				}
				else // Last column
				{	
					m_stempString = m_stempString + "\"" + m_stempSql + "\"";
				}				
			}
			
			// Store the header row as the first row in memory
			m_aRows.Add(m_stempString);

			// Read and store the rest of the rows in memory
			while (!m_rSheet->IsEOF())
			{
				m_dTotalRows++; // Keep count of total number of rows
				try
				{
					// Get all the columns in a row
					m_stempString.Empty();
					for (short column = 0; column < m_dTotalColumns; column++)
					{
						m_rSheet->GetFieldValue(column, m_stempSql);

						// Join up all the columns into a string
						if (column != m_dTotalColumns-1) // Not last column
						{
							m_stempString = m_stempString + "\"" + m_stempSql + "\"" + m_sSeparator;
						}
						else // Last column
						{	
							m_stempString = m_stempString + "\"" + m_stempSql + "\"";
						}
					}

					// Store the obtained row in memory
					m_aRows.Add(m_stempString);
					m_rSheet->MoveNext();
				}
				catch (...)
				{
					m_sLastError = "Error reading row\n";
					delete m_rSheet;
					m_rSheet = NULL;
					m_Database->Close();
					return false;
				}
			}		
		}
		
		m_rSheet->Close();
		delete m_rSheet;
		m_rSheet = NULL;
		m_Database->Close();
		m_dCurrentRow = 1;
		return true;
	}
	else // if file is a text delimited file
	{
		try
		{
			CFile *File = NULL;
			File = new CFile(m_sFile, CFile::modeRead | CFile::shareDenyNone);
			if (File != NULL)
			{
				CArchive *Archive = NULL;
				Archive = new CArchive(File, CArchive::load);
				if (Archive != NULL)
				{
					m_aRows.RemoveAll();
					// Read and store all rows in memory
					while(Archive->ReadString(m_stempString))
					{
						m_aRows.Add(m_stempString);
					}
					ReadRow(m_aFieldNames, 1); // Get field names i.e header row
					delete Archive;
					delete File;

					// Get total number of rows
					m_dTotalRows = m_aRows.GetSize();

					// Get the largest number of columns
					for (int i = 0; i < m_aRows.GetSize(); i++)
					{
						ReadRow(m_atempArray, i);
						if (m_atempArray.GetSize() > m_dTotalColumns)
						{
							m_dTotalColumns = m_atempArray.GetSize();
						}
					}

					if (m_dTotalColumns != 0)
					{
						m_bAppend = true;
					}
					return true;
				}
				delete File;
			}
		}
		catch(...)
		{
		}
		m_sLastError = "Error in opening file\n";
		return false;
	}
}

// Convert Excel column in alphabet into column number
short CSpreadSheet::CalculateColumnNumber(CString column, bool Auto)
{
	if (Auto)
	{
		int firstLetter, secondLetter;
		column.MakeUpper();

		if (column.GetLength() == 1)
		{
			firstLetter = column.GetAt(0);
			return (firstLetter - 65 + 1); // 65 is A in ascii
		}
		else if (column.GetLength() == 2)
		{
			firstLetter = column.GetAt(0);
			secondLetter = column.GetAt(1);
			return ((firstLetter - 65 + 1)*26 + (secondLetter - 65 + 1)); // 65 is A in ascii
		}
	}

	// Check if it is a valid field name
	for (int i = 0; i < m_aFieldNames.GetSize(); i++)
	{
		if (!column.Compare(m_aFieldNames.GetAt(i)))
		{
			return (i + 1);
		}
	}
	m_sLastError = "Invalid field name or column alphabet\n";
	return 0;	
}

// Get the name of the Excel-ODBC driver
void CSpreadSheet::GetExcelDriver()
{
	char szBuf[2001];
	WORD cbBufMax = 2000;
	WORD cbBufOut;
	char *pszBuf = szBuf;

	// Get the names of the installed drivers ("odbcinst.h" has to be included )
	if(!SQLGetInstalledDrivers(szBuf,cbBufMax,& cbBufOut))
	{
		m_sExcelDriver = "";
	}
	
	// Search for the driver...
	do
	{
		if( strstr( pszBuf, "Excel" ) != 0 )
		{
			// Found !
			m_sExcelDriver = CString( pszBuf );
			break;
		}
		pszBuf = strchr( pszBuf, '\0' ) + 1;
	}
	while( pszBuf[1] != '\0' );
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利av| 日韩精品一区二区三区三区免费| 欧美国产丝袜视频| 春色校园综合激情亚洲| 亚洲视频免费看| 欧美三级电影网站| 日本美女一区二区三区视频| 欧美一区二区大片| 国产精品一区二区久久不卡| 国产午夜精品久久久久久久 | 日韩一级在线观看| 国产在线视视频有精品| 国产精品视频看| 在线观看日韩电影| 日本强好片久久久久久aaa| 日韩精品一区二区三区老鸭窝| 国产在线麻豆精品观看| |精品福利一区二区三区| 精品视频一区 二区 三区| 久久国产精品第一页| 国产欧美日韩三级| 欧美日本精品一区二区三区| 久久草av在线| 亚洲老妇xxxxxx| 日韩欧美在线网站| 成人免费视频一区| 婷婷中文字幕综合| 国产欧美精品一区| 69av一区二区三区| 本田岬高潮一区二区三区| 亚洲成人动漫一区| 国产精品久久久99| 日韩视频一区二区| 99这里只有精品| 激情六月婷婷久久| 亚洲一区二区三区激情| 国产亲近乱来精品视频| 欧美四级电影网| 成人黄色a**站在线观看| 日韩中文字幕不卡| 亚洲免费观看在线视频| 久久这里只有精品首页| 欧美日韩国产综合一区二区三区| 国产丶欧美丶日本不卡视频| 图片区日韩欧美亚洲| 国产精品欧美久久久久一区二区| 日韩亚洲欧美成人一区| 欧美色电影在线| 99久久国产综合色|国产精品| 久久99精品久久久久久久久久久久 | 欧美国产综合一区二区| 欧美一区二区三区视频在线观看| 成人av免费网站| 国产在线播精品第三| 香蕉成人啪国产精品视频综合网| 一区精品在线播放| 国产精品天天看| 久久综合av免费| 日韩一区二区免费在线观看| 欧美色综合天天久久综合精品| 国产精品18久久久久久久久| 久久精品99国产精品| 午夜电影网亚洲视频| 亚洲一区二区三区在线| 玉足女爽爽91| 中文字幕一区三区| 国产精品久久久久久久久晋中| 久久久久88色偷偷免费| 日韩欧美www| 日韩免费福利电影在线观看| 欧美性受xxxx黑人xyx性爽| 国产精品中文字幕欧美| 韩国成人精品a∨在线观看| 免费观看91视频大全| 日本不卡不码高清免费观看| 日韩综合小视频| 日本人妖一区二区| 久久国产生活片100| 蜜桃久久av一区| 蜜臀国产一区二区三区在线播放| 日产精品久久久久久久性色| 亚洲va欧美va人人爽| 日韩高清在线一区| 无吗不卡中文字幕| 麻豆精品久久精品色综合| 麻豆成人在线观看| 国产精品一区2区| 蜜臀av国产精品久久久久| 韩日av一区二区| 国产成人精品一区二区三区四区| 成人午夜激情影院| 色婷婷av一区二区三区gif| 欧美视频一区二区| 日韩午夜三级在线| 久久久国际精品| 亚洲欧美日韩在线播放| 亚洲午夜精品一区二区三区他趣| 亚洲成人精品一区| 九一九一国产精品| 国产成人精品免费看| 色综合天天性综合| 7777精品久久久大香线蕉| 欧美电影免费观看高清完整版 | 午夜精品123| 久久av老司机精品网站导航| 国产jizzjizz一区二区| 99久久综合狠狠综合久久| 欧美综合在线视频| 精品国产百合女同互慰| 亚洲日本成人在线观看| 日韩va亚洲va欧美va久久| 国产精品影视天天线| 色欧美日韩亚洲| 精品国产a毛片| 亚洲精品成a人| 久久99精品久久久久| 91香蕉视频污| 日韩免费高清av| 亚洲精品视频在线观看网站| 免费看黄色91| 日本精品一区二区三区高清 | 精品国产乱码久久| 亚洲乱码日产精品bd | 成人午夜私人影院| 欧美精品99久久久**| 国产欧美日本一区视频| 亚洲chinese男男1069| 国产不卡一区视频| 欧美一区二区私人影院日本| 亚洲国产精品激情在线观看| 首页欧美精品中文字幕| 成人av在线看| 久久综合色一综合色88| 亚洲成a人在线观看| 不卡一区二区在线| 精品国产伦一区二区三区观看体验| 曰韩精品一区二区| 成人免费高清视频在线观看| 日韩欧美国产一二三区| 一区二区三区不卡在线观看| 成人中文字幕在线| 欧美大片日本大片免费观看| 亚洲动漫第一页| 99久久免费视频.com| 久久品道一品道久久精品| 日本亚洲欧美天堂免费| 欧美视频完全免费看| 亚洲人成精品久久久久| 成人一级视频在线观看| 欧美sm美女调教| 麻豆一区二区99久久久久| 色999日韩国产欧美一区二区| 国产精品天干天干在观线| 狠狠v欧美v日韩v亚洲ⅴ| 日韩精品在线看片z| 日韩av一区二区在线影视| 欧美喷潮久久久xxxxx| 亚洲高清免费一级二级三级| 91精品91久久久中77777| 亚洲欧美一区二区在线观看| 成人毛片老司机大片| 国产日本欧洲亚洲| 国产成人精品aa毛片| 国产午夜精品一区二区三区视频 | 国产婷婷精品av在线| 国产一区二区三区久久悠悠色av | 欧美浪妇xxxx高跟鞋交| 亚洲一区二区三区在线看| 欧美在线短视频| 一区二区三区**美女毛片| 色国产精品一区在线观看| 亚洲自拍都市欧美小说| 欧美日韩一二区| 偷窥少妇高潮呻吟av久久免费| 9191久久久久久久久久久| 午夜精品一区二区三区三上悠亚| 欧美精品久久99久久在免费线| 亚洲电影激情视频网站| 欧美一区二区三区视频免费| 免播放器亚洲一区| 精品国产乱码久久久久久浪潮 | 久久这里只有精品视频网| 国产1区2区3区精品美女| 国产精品美女久久久久高潮| 成人av动漫网站| 亚洲一区自拍偷拍| 欧美一区二区女人| 国产一区二区不卡| 国产精品久久777777| 欧美最新大片在线看| 奇米888四色在线精品| 久久久精品黄色| 不卡的av网站| 亚洲成人av中文| 久久婷婷国产综合国色天香 | 亚洲超碰精品一区二区| 日韩精品一区二区三区视频播放| 国产精品系列在线播放| 亚洲欧美日韩国产手机在线| 欧美高清性hdvideosex|