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

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

?? cspreadsheet.h

?? 對(duì)excel的操作提供了一個(gè)類
?? H
?? 第 1 頁 / 共 3 頁
字號(hào):
			}
			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一区二区三区免费野_久草精品视频
91久久精品一区二区三区| 欧美一区二区国产| 成人免费看黄yyy456| 久热成人在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一区二区三区喷汁尤物| 在线观看不卡一区| 99精品欧美一区| 成人免费毛片片v| 国产乱国产乱300精品| 久久99久久久欧美国产| 午夜精品福利久久久| 亚洲品质自拍视频| 日韩理论在线观看| 中文字幕av一区 二区| 国产视频911| 宅男噜噜噜66一区二区66| 欧美在线观看视频一区二区| 99免费精品在线| 91最新地址在线播放| 成人av电影免费在线播放| 国产成人av福利| 国产综合成人久久大片91| 狂野欧美性猛交blacked| 免费视频最近日韩| 久久99精品国产麻豆不卡| 日韩av一区二| 奇米一区二区三区av| 久久精品国产精品亚洲精品| 久久精品理论片| 国产原创一区二区三区| 久草在线在线精品观看| 国内精品免费在线观看| 久久99精品国产91久久来源| 韩国午夜理伦三级不卡影院| 国内一区二区在线| 精品在线亚洲视频| 国产成人av电影在线观看| 激情小说亚洲一区| 成人午夜碰碰视频| 色综合中文综合网| 亚洲欧洲国产日本综合| 国产精品福利影院| 亚洲狠狠丁香婷婷综合久久久| 亚洲综合在线电影| 男女男精品视频| 国产精品一卡二卡在线观看| 成人av网站免费观看| 欧美在线小视频| 久久婷婷成人综合色| 亚洲图片欧美综合| 国产一区二区三区不卡在线观看| 91黄视频在线观看| 精品成人私密视频| 亚洲国产成人va在线观看天堂| 国产精品一区二区不卡| 欧美三级韩国三级日本一级| 亚洲国产成人自拍| 亚洲国产日韩a在线播放性色| 日韩国产精品久久久| 国产乱国产乱300精品| 一本大道综合伊人精品热热| 制服丝袜中文字幕一区| 国产精品国产三级国产有无不卡| 亚洲国产乱码最新视频| 国产一区二区视频在线播放| youjizz国产精品| 欧美视频三区在线播放| 欧美精品一区二| 亚洲美女偷拍久久| 韩日av一区二区| 欧美系列在线观看| 国产欧美一区二区精品久导航 | 精品第一国产综合精品aⅴ| 国产精品区一区二区三| 视频一区欧美日韩| 99久久婷婷国产综合精品电影| 欧美一区二区三区婷婷月色| 亚洲天堂a在线| 久久99精品视频| 欧美日韩一二三| 中文字幕不卡的av| 久久国产夜色精品鲁鲁99| 色哟哟国产精品免费观看| 久久众筹精品私拍模特| 亚洲电影在线播放| 97久久精品人人做人人爽50路| 26uuu亚洲婷婷狠狠天堂| 一个色在线综合| 福利电影一区二区三区| 日韩欧美国产一区二区在线播放| 一区二区三区在线免费播放 | 欧美精品在线一区二区三区| 中文字幕第一区综合| 美女视频黄免费的久久| 欧美中文字幕亚洲一区二区va在线 | 亚瑟在线精品视频| 91在线看国产| 国产三级精品在线| 久久99蜜桃精品| 884aa四虎影成人精品一区| 亚洲欧洲制服丝袜| 成人av在线资源网站| wwwwxxxxx欧美| 亚洲国产精品一区二区www在线| 成人精品小蝌蚪| 久久久久久久免费视频了| 轻轻草成人在线| 91精品国产综合久久福利| 亚洲影视资源网| 91免费看视频| 国产精品日产欧美久久久久| 国产精选一区二区三区| 26uuu亚洲婷婷狠狠天堂| 久久国产尿小便嘘嘘尿| 欧美一区二区三区四区视频| 亚洲v精品v日韩v欧美v专区| 在线观看av不卡| 亚洲精品免费在线| 日本道精品一区二区三区| 亚洲欧美偷拍卡通变态| 色婷婷综合久久久久中文 | 成人午夜精品在线| **性色生活片久久毛片| 91久久精品网| 日本中文字幕一区二区视频| 精品黑人一区二区三区久久| 国产精品亚洲成人| 亚洲欧美欧美一区二区三区| 欧美日韩一区二区三区在线| 麻豆成人av在线| 国产女人18水真多18精品一级做 | 国产日韩欧美制服另类| 91碰在线视频| 天天综合网 天天综合色| 欧美成人艳星乳罩| 丁香六月综合激情| 亚洲福利视频三区| 久久久精品影视| 色综合久久天天综合网| 蜜臀av性久久久久蜜臀av麻豆| 亚洲国产成人午夜在线一区| 在线观看精品一区| 国内不卡的二区三区中文字幕 | 成人免费看黄yyy456| 亚洲国产综合人成综合网站| 欧美大白屁股肥臀xxxxxx| 懂色av一区二区在线播放| 亚洲五月六月丁香激情| 欧美mv日韩mv国产网站| 99re这里只有精品6| 蜜桃视频在线观看一区二区| 国产精品麻豆久久久| 欧美人狂配大交3d怪物一区| 国产成人在线视频网址| 亚洲国产日韩av| 久久精品人人做人人爽97| 欧美视频你懂的| 成人污污视频在线观看| 日韩激情一二三区| 国产精品视频在线看| 777a∨成人精品桃花网| 99久久精品免费看国产| 蜜桃精品在线观看| 亚洲精品国产无套在线观| 久久精品男人天堂av| 在线播放欧美女士性生活| aaa欧美大片| 精品一区二区免费| 亚洲成人av福利| |精品福利一区二区三区| 久久无码av三级| 制服丝袜中文字幕一区| 91首页免费视频| 国产一区二区三区久久悠悠色av| 五月激情综合网| 一区二区三区视频在线看| 国产片一区二区| 日韩精品一区二区三区视频播放| 精品视频123区在线观看| 成人app在线| 国产不卡免费视频| 精品一区二区三区久久久| 天天色天天操综合| 一区二区不卡在线播放| 最近日韩中文字幕| 国产午夜一区二区三区| 日韩亚洲欧美一区二区三区| 欧美日韩黄视频| 欧美四级电影网| 色av成人天堂桃色av| zzijzzij亚洲日本少妇熟睡| 国产在线看一区| 精品亚洲欧美一区| 麻豆免费精品视频| 日本网站在线观看一区二区三区| 亚洲电影在线播放| 一二三区精品福利视频| 亚洲欧美日韩一区二区三区在线观看| 中文字幕va一区二区三区|