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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cspreadsheet.h

?? VC++程序開發(fā)
?? H
?? 第 1 頁 / 共 3 頁
字號(hào):
				m_Database->ExecuteSQL(m_stempSql);
			}
			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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品嫩草99a| 国产精品高潮久久久久无| 色狠狠色狠狠综合| av资源网一区| 成人一道本在线| 成人免费不卡视频| 欧美日高清视频| 一区二区三区在线免费视频| 国产精品伦理在线| 国产精品久久国产精麻豆99网站| 欧美激情在线一区二区| 日本一区二区不卡视频| 国产精品女人毛片| 中文字幕综合网| 亚洲激情一二三区| 一级做a爱片久久| 性做久久久久久| 日韩精品电影在线| 国内一区二区在线| 成人性视频免费网站| 99re成人精品视频| 色婷婷激情一区二区三区| 欧美午夜电影在线播放| 欧美一卡2卡三卡4卡5免费| 日韩免费性生活视频播放| 久久久精品tv| 亚洲人成伊人成综合网小说| 亚洲福利视频三区| 捆绑调教美女网站视频一区| 国产在线视频精品一区| 91免费视频大全| 欧美精品乱码久久久久久| 精品成人私密视频| 国产精品久久久久久久久免费桃花| 亚洲女爱视频在线| 日韩电影网1区2区| 国产很黄免费观看久久| 色香蕉久久蜜桃| 日韩欧美自拍偷拍| 国产精品美女久久久久久久久久久| 亚洲激情中文1区| 麻豆国产精品视频| 99精品久久99久久久久| 在线观看91av| 亚洲国产精品二十页| 亚洲一本大道在线| 国产很黄免费观看久久| 欧美三级一区二区| 国产亚洲1区2区3区| 亚洲影院久久精品| 国产成人亚洲综合a∨猫咪| 欧美在线一二三| 久久综合色综合88| 亚洲影院理伦片| 国产成人在线观看免费网站| 欧美色图在线观看| 日本一区二区三区dvd视频在线| 亚洲国产美女搞黄色| 国产精品77777| 欧美欧美欧美欧美首页| 中文字幕一区二区三区四区不卡| 免费观看成人鲁鲁鲁鲁鲁视频| 不卡电影免费在线播放一区| 日韩欧美一级特黄在线播放| 亚洲女与黑人做爰| 国产成人欧美日韩在线电影| 777久久久精品| 亚洲视频小说图片| 国产大陆a不卡| 91精品国产麻豆国产自产在线| 国产精品久久久久aaaa樱花 | 5858s免费视频成人| 国产欧美日韩在线看| 日韩激情一二三区| 色综合网色综合| 久久精品一区二区三区不卡牛牛| 图片区小说区区亚洲影院| 91网站最新地址| 国产日韩影视精品| 蜜乳av一区二区三区| 精品视频免费在线| 亚洲精品免费在线播放| 成人小视频在线| 久久欧美中文字幕| 蜜乳av一区二区| 欧美一区二区视频观看视频| 亚洲综合图片区| 91免费视频网| 亚洲色图一区二区三区| jvid福利写真一区二区三区| 国产亚洲一区二区在线观看| 精品一区二区三区久久久| 91精品国产日韩91久久久久久| 亚洲国产精品一区二区久久| 一本久久精品一区二区| 亚洲色欲色欲www| av资源网一区| 亚洲日穴在线视频| 91视视频在线直接观看在线看网页在线看| 国产午夜久久久久| 国产成人综合在线| 国产亚洲综合在线| 国产精品主播直播| 欧美激情艳妇裸体舞| 成人午夜看片网址| 中文字幕在线免费不卡| eeuss鲁一区二区三区| 国产精品国产三级国产有无不卡 | 99久精品国产| 亚洲日本中文字幕区| 91麻豆精品在线观看| 亚洲理论在线观看| 欧美揉bbbbb揉bbbbb| 视频一区二区中文字幕| 91麻豆精品国产91久久久久久| 丝袜亚洲精品中文字幕一区| 欧美一区二区三区在线观看视频| 日韩国产一二三区| 日韩精品一区在线观看| 国产在线看一区| 国产偷国产偷亚洲高清人白洁| 国产成人丝袜美腿| 亚洲免费伊人电影| 在线电影一区二区三区| 久久精品国产77777蜜臀| 久久久影院官网| 9人人澡人人爽人人精品| 一区二区成人在线| 91精品国产综合久久香蕉麻豆| 激情成人午夜视频| 国产精品久久久久7777按摩| 在线观看日韩一区| 美日韩一级片在线观看| 久久亚洲一级片| 91一区二区在线观看| 亚洲成av人影院| 精品久久国产97色综合| 成人激情免费网站| 亚洲一卡二卡三卡四卡无卡久久| 日韩色视频在线观看| 懂色av一区二区三区免费看| 洋洋成人永久网站入口| 日韩欧美激情在线| 99久久精品国产一区二区三区 | 天涯成人国产亚洲精品一区av| 欧美一级片在线看| 成人激情电影免费在线观看| 亚洲成人精品在线观看| 久久久蜜桃精品| 91黄色在线观看| 狠狠色狠狠色综合日日91app| 中文字幕亚洲在| 日韩视频国产视频| 91色综合久久久久婷婷| 久久国产尿小便嘘嘘尿| 亚洲三级免费电影| 精品国产乱码久久久久久浪潮| 成人av在线资源网站| 蜜桃在线一区二区三区| 亚洲美女视频一区| 日韩精品中文字幕一区| 日本精品免费观看高清观看| 狠狠久久亚洲欧美| 亚洲卡通动漫在线| 久久久久久电影| 欧美二区乱c少妇| 91影院在线免费观看| 久久国产人妖系列| 午夜日韩在线电影| 中文字幕一区二区三区视频| 精品国产一二三| 欧美亚洲日本国产| 99热这里都是精品| 国产一区二区看久久| 日本在线观看不卡视频| 亚洲色图欧美偷拍| 中文字幕不卡一区| 欧美va日韩va| 欧美久久久久免费| 色婷婷综合久久久| 成人高清av在线| 国产美女一区二区三区| 日韩电影在线一区二区三区| 亚洲综合成人在线| 中文字幕一区二区在线观看| 久久精品视频在线看| 日韩一区二区三区免费观看| 欧美专区日韩专区| 一本久久a久久精品亚洲| 国产不卡在线视频| 国产一区二区三区四区在线观看| 日韩高清国产一区在线| 亚洲国产成人av| 一区2区3区在线看| 一区二区三区在线看| 亚洲日本一区二区| 综合久久综合久久| 亚洲欧美在线aaa| 中文字幕中文字幕在线一区 | 91麻豆swag|