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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cspreadsheet.h

?? VC++程序開(kāi)發(fā)
?? H
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	{
		return false;
	}

	if (AddCell(CellValue, columnIndex, row))
	{
		return true;
	}
	return false;
}

// Replace or add a cell into spreadsheet using column number
// Default is add cell into new row.
bool CSpreadSheet::AddCell(CString CellValue, short column, long row)
{
	if (column == 0)
	{
		m_sLastError = "Column cannot be zero\n";
		return false;
	}

	long tempRow;

	if (m_bExcel) // For Excel spreadsheet
	{
		if (column > m_aFieldNames.GetSize() + 1)
		{
			m_sLastError = "Cell column to be added cannot be greater than the number of fields\n";
			return false;
		}
	}
	else // For text delimited spreadsheet
	{
		// Update largest number of columns if necessary
		if (column > m_dTotalColumns)
		{
			m_dTotalColumns = column;
		}
	}

	if (row)
	{
		if (row <= m_dTotalRows)
		{
			ReadRow(m_atempArray, row);
	
			// Change desired row
			m_atempArray.SetAtGrow(column-1, CellValue);

			if (row == 1)
			{
				if (m_bExcel) // Check for duplicate header row field
				{										
					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));
								return false;
							}
						}
					}
				}

				// Update header row
				m_aFieldNames.RemoveAll();
				m_aFieldNames.Copy(m_atempArray);
			}	

			if (!AddRow(m_atempArray, row, true))
			{
				return false;
			}

			if (!m_bTransaction)
			{
				Commit();
			}
			return true;
		}
		else
		{
			// Insert null rows until specified row
			m_dCurrentRow = m_dTotalRows;
			m_stempSql.Empty();
			CString nullString;
			for (int i = 1; i <= m_dTotalColumns; i++)
			{
				if (i != m_dTotalColumns)
				{
					if (m_bExcel)
					{
						nullString.Format("\" \"%s", m_sSeparator);
					}
					else
					{
						nullString.Format("\"\"%s", m_sSeparator);
					}
					m_stempSql += nullString;
				}
				else
				{
					if (m_bExcel)
					{
						m_stempSql += "\" \"";
					}
					else
					{
						m_stempSql += "\"\"";
					}
				}
			}
			for (int j = m_dTotalRows + 1; j < row; j++)
			{
				m_dCurrentRow++;
				m_aRows.Add(m_stempSql);
			}
		}
	}
	else
	{
		tempRow = m_dCurrentRow;
		m_dCurrentRow = m_dTotalRows;
	}

	// Insert cell
	m_dCurrentRow++;
	m_stempString.Empty();
	for (int j = 1; j <= m_dTotalColumns; j++)
	{
		if (j != m_dTotalColumns) // Not last column
		{
			if (j != column)
			{
				if (m_bExcel)
				{
					m_stempSql.Format("\" \"%s", m_sSeparator);
				}
				else
				{
					m_stempSql.Format("\"\"%s", m_sSeparator);
				}
				m_stempString += m_stempSql;
			}
			else
			{
				m_stempSql.Format("\"%s\"%s", CellValue, m_sSeparator);
				m_stempString += m_stempSql;
			}
		}
		else // Last column
		{
			if (j != column)
			{
				if (m_bExcel)
				{
					m_stempString += "\" \"";
				}
				else
				{
					m_stempString += "\"\"";
				}
			}
			else
			{
				m_stempSql.Format("\"%s\"", CellValue);
				m_stempString += m_stempSql;
			}
		}
	}	

	m_aRows.Add(m_stempString);
	
	if (row > m_dTotalRows)
	{
		m_dTotalRows = row;
	}
	else if (!row)
	{
		m_dTotalRows = m_dCurrentRow;
		m_dCurrentRow = tempRow;
	}
	if (!m_bTransaction)
	{
		Commit();
	}
	return true;
}

// Search and replace rows in Excel spreadsheet
bool CSpreadSheet::ReplaceRows(CStringArray &NewRowValues, CStringArray &OldRowValues)
{
	if (m_bExcel) // If file is an Excel spreadsheet
	{
		m_Database->OpenEx(m_sDsn, CDatabase::noOdbcDialog);
		m_stempSql.Format("UPDATE [%s] SET ", m_sSheetName);
		for (int i = 0; i < NewRowValues.GetSize(); i++)
		{
			m_stempString.Format("[%s]='%s', ", m_aFieldNames.GetAt(i), NewRowValues.GetAt(i));
			m_stempSql = m_stempSql + m_stempString;
		}
		m_stempSql.Delete(m_stempSql.GetLength()-2, 2);
		m_stempSql = m_stempSql + " WHERE (";
		for (int j = 0; j < OldRowValues.GetSize()-1; j++)
		{
			m_stempString.Format("[%s]='%s' AND ", m_aFieldNames.GetAt(j), OldRowValues.GetAt(j));
			m_stempSql = m_stempSql + m_stempString;
		}
		m_stempSql.Delete(m_stempSql.GetLength()-4, 5);
		m_stempSql += ")";

		try
		{
			m_Database->ExecuteSQL(m_stempSql);
			m_Database->Close();
			Open();
			return true;
		}
		catch(CDBException *e)
		{
			m_sLastError = e->m_strError;
			m_Database->Close();
			return false;
		}
	}
	else // if file is a text delimited file
	{
		m_sLastError = "Function not available for text delimited file\n";
		return false;
	}
}

// Read a row from spreadsheet. 
// Default is read the next row
bool CSpreadSheet::ReadRow(CStringArray &RowValues, long row)
{
	// Check if row entered is more than number of rows in sheet
	if (row <= m_aRows.GetSize())
	{
		if (row != 0)
		{
			m_dCurrentRow = row;
		}
		else if (m_dCurrentRow > m_aRows.GetSize())
		{
			return false;
		}
		// Read the desired row
		RowValues.RemoveAll();
		m_stempString = m_aRows.GetAt(m_dCurrentRow-1);
		m_dCurrentRow++;

		// Search for separator to split row
		int separatorPosition;
		m_stempSql.Format("\"%s\"", m_sSeparator);
		separatorPosition = m_stempString.Find(m_stempSql); // If separator is "?"
		if (separatorPosition != -1)
		{
			// Save columns
			int nCount = 0;
			int stringStartingPosition = 0;
			while (separatorPosition != -1)
			{
				nCount = separatorPosition - stringStartingPosition;
				RowValues.Add(m_stempString.Mid(stringStartingPosition, nCount));
				stringStartingPosition = separatorPosition + m_stempSql.GetLength();
				separatorPosition = m_stempString.Find(m_stempSql, stringStartingPosition);
			}
			nCount = m_stempString.GetLength() - stringStartingPosition;
			RowValues.Add(m_stempString.Mid(stringStartingPosition, nCount));

			// Remove quotes from first column
			m_stempString = RowValues.GetAt(0);
			m_stempString.Delete(0, 1);
			RowValues.SetAt(0, m_stempString);
			
			// Remove quotes from last column
			m_stempString = RowValues.GetAt(RowValues.GetSize()-1);
			m_stempString.Delete(m_stempString.GetLength()-1, 1);
			RowValues.SetAt(RowValues.GetSize()-1, m_stempString);

			return true;
		}
		else
		{
			// Save columns
			separatorPosition = m_stempString.Find(m_sSeparator); // if separator is ?
			if (separatorPosition != -1)
			{
				int nCount = 0;
				int stringStartingPosition = 0;
				while (separatorPosition != -1)
				{
					nCount = separatorPosition - stringStartingPosition;
					RowValues.Add(m_stempString.Mid(stringStartingPosition, nCount));
					stringStartingPosition = separatorPosition + m_sSeparator.GetLength();
					separatorPosition = m_stempString.Find(m_sSeparator, stringStartingPosition);
				}
				nCount = m_stempString.GetLength() - stringStartingPosition;
				RowValues.Add(m_stempString.Mid(stringStartingPosition, nCount));
				return true;
			}
			else	// Treat spreadsheet as having one column
			{
				// Remove opening and ending quotes if any
				int quoteBegPos = m_stempString.Find('\"');
				int quoteEndPos = m_stempString.ReverseFind('\"');
				if ((quoteBegPos == 0) && (quoteEndPos == m_stempString.GetLength()-1))
				{
					m_stempString.Delete(0, 1);
					m_stempString.Delete(m_stempString.GetLength()-1, 1);
				}

				RowValues.Add(m_stempString);
			}
		}
	}
	m_sLastError = "Desired row is greater than total number of rows in spreadsheet\n";
	return false;
}

// Read a column from Excel spreadsheet using header row or column alphabet. 
// Set Auto to false if want to force column to be used as header name
bool CSpreadSheet::ReadColumn(CStringArray &ColumnValues, CString column, bool Auto)
{
	short columnIndex = CalculateColumnNumber(column, Auto);
	if (columnIndex == 0)
	{
		return false;
	}

	if (ReadColumn(ColumnValues, columnIndex))
	{
		return true;
	}
	return false;
}

// Read a column from spreadsheet using column number
bool CSpreadSheet::ReadColumn(CStringArray &ColumnValues, short column)
{
	if (column == 0)
	{
		m_sLastError = "Column cannot be zero\n";
		return false;
	}

	int tempRow = m_dCurrentRow;
	m_dCurrentRow = 1;
	ColumnValues.RemoveAll();
	for (int i = 1; i <= m_aRows.GetSize(); i++)
	{
		// Read each row
		if (ReadRow(m_atempArray, i))
		{
			// Get value of cell in desired column
			if (column <= m_atempArray.GetSize())
			{
				ColumnValues.Add(m_atempArray.GetAt(column-1));
			}
			else
			{
				ColumnValues.Add("");
			}
		}
		else
		{
			m_dCurrentRow = tempRow;
			m_sLastError = "Error reading row\n";
			return false;
		}
	}
	m_dCurrentRow = tempRow;
	return true;
}

// Read a cell from Excel spreadsheet using header row or column alphabet. 
// Default is read the next cell in next row. 
// Set Auto to false if want to force column to be used as header name
bool CSpreadSheet::ReadCell (CString &CellValue, CString column, long row, bool Auto)
{
	short columnIndex = CalculateColumnNumber(column, Auto);
	if (columnIndex == 0)
	{
		return false;
	}

	if (ReadCell(CellValue, columnIndex, row))
	{
		return true;
	}
	return false;
}

// Read a cell from spreadsheet using column number. 
// Default is read the next cell in next row.
bool CSpreadSheet::ReadCell (CString &CellValue, short column, long row)
{
	if (column == 0)
	{
		m_sLastError = "Column cannot be zero\n";
		return false;
	}

	int tempRow = m_dCurrentRow;
	if (row)
	{
		m_dCurrentRow = row;
	}
	if (ReadRow(m_atempArray, m_dCurrentRow))
	{
		// Get value of cell in desired column
		if (column <= m_atempArray.GetSize())
		{
			CellValue = m_atempArray.GetAt(column-1);
		}
		else
		{
			CellValue.Empty();
			m_dCurrentRow = tempRow;
			return false;
		}
		m_dCurrentRow = tempRow;
		return true;
	}
	m_dCurrentRow = tempRow;
	m_sLastError = "Error reading row\n";
	return false;
}

// Begin transaction
void CSpreadSheet::BeginTransaction()
{
	m_bTransaction = true;
}

// Save changes to spreadsheet
bool CSpreadSheet::Commit()
{
	if (m_bExcel) // If file is an Excel spreadsheet
	{
		m_Database->OpenEx(m_sDsn, CDatabase::noOdbcDialog);

		if (m_bAppend)
		{
			// Delete old sheet if it exists
			m_stempString= "[" + m_sSheetName + "$A1:IV65536]";
			m_stempSql.Format ("DROP TABLE %s", m_stempString);
			try
			{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜亚洲福利老司机| 亚洲综合色噜噜狠狠| 97久久人人超碰| 色偷偷久久人人79超碰人人澡| 亚洲丝袜美腿综合| 精品国产一区二区三区四区四| 91网站最新地址| 国产一区二三区| 亚洲v中文字幕| 亚洲少妇30p| 久久久久久毛片| 欧美日韩一级二级三级| 波多野洁衣一区| 国产剧情一区二区| 免费在线观看日韩欧美| 亚洲一区二区三区爽爽爽爽爽| 久久久蜜桃精品| 日韩精品综合一本久道在线视频| 色伊人久久综合中文字幕| 国产精品一区2区| 美女精品自拍一二三四| 亚洲国产欧美在线| 亚洲人成在线观看一区二区| 久久欧美一区二区| 欧美成人aa大片| 3d动漫精品啪啪一区二区竹菊| 一本到三区不卡视频| 成人美女在线视频| 粉嫩嫩av羞羞动漫久久久| 老司机精品视频线观看86| 五月综合激情婷婷六月色窝| 一区二区三区成人| 亚洲欧美影音先锋| 亚洲欧洲av在线| 麻豆91精品91久久久的内涵| 亚洲超碰精品一区二区| 亚洲宅男天堂在线观看无病毒| 亚洲视频一二三区| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕不卡三区| 国产精品久久久久久久午夜片| 国产清纯在线一区二区www| 国产三区在线成人av| 国产午夜精品一区二区| 欧美激情一区二区三区在线| 久久久久青草大香线综合精品| 2020国产成人综合网| 久久午夜羞羞影院免费观看| 久久久精品影视| 中文字幕高清不卡| 亚洲欧美日本在线| 亚洲国产精品久久一线不卡| 天天综合网 天天综合色| 日韩国产欧美在线观看| 蜜桃av一区二区三区电影| 激情综合色播激情啊| 国产麻豆欧美日韩一区| 大白屁股一区二区视频| 色综合天天狠狠| 欧美精品成人一区二区三区四区| 欧美一区二区三区婷婷月色| 精品国产1区二区| 日本一区二区不卡视频| 亚洲激情成人在线| 日韩电影在线观看电影| 国产美女精品人人做人人爽| 不卡一二三区首页| 欧美日韩亚洲丝袜制服| 欧美r级在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲色图视频网站| 亚洲成人资源网| 国产一区二区在线视频| k8久久久一区二区三区| 欧美女孩性生活视频| 欧美精品一区二区三区蜜臀| 自拍偷拍欧美激情| 午夜精品一区二区三区电影天堂| 麻豆91在线播放免费| 成人免费视频caoporn| 欧美日韩亚洲综合一区二区三区| 欧美精品一区二区精品网| 亚洲精品乱码久久久久久日本蜜臀| 水蜜桃久久夜色精品一区的特点| 国产一区二区三区免费在线观看 | 国产精品一二三四区| 在线这里只有精品| 精品国产乱码久久久久久蜜臀 | 亚洲综合图片区| 韩日欧美一区二区三区| 在线欧美日韩国产| 麻豆一区二区三| 99久久婷婷国产| 欧美大片顶级少妇| 夜夜爽夜夜爽精品视频| 国产精品一区二区三区99| 欧美日韩aaaaaa| 国产精品卡一卡二| 久久国产精品无码网站| 欧美亚洲自拍偷拍| 国产精品嫩草影院com| 免费观看在线综合| 在线免费观看日本欧美| 中国av一区二区三区| 蜜臀久久久久久久| 在线视频一区二区免费| 中文字幕不卡在线| 精品一区二区成人精品| 欧美日本在线播放| 亚洲六月丁香色婷婷综合久久| 国产精品123| 精品久久一区二区三区| 日韩不卡一区二区| 欧美三级日韩三级| 亚洲另类春色国产| 成人av免费观看| 国产欧美日韩精品在线| 久久99国产精品久久| 欧美一区二区三区在线电影| 亚洲精品视频免费观看| 99热在这里有精品免费| 国产日韩精品久久久| 国内精品伊人久久久久av影院| 欧美一区二区三区啪啪| 五月天丁香久久| 欧美另类一区二区三区| 亚洲午夜国产一区99re久久| 91久久精品国产91性色tv| 亚洲日本护士毛茸茸| 91女神在线视频| 亚洲私人黄色宅男| 色久优优欧美色久优优| 亚洲欧美激情小说另类| 国产校园另类小说区| 国产乱人伦精品一区二区在线观看 | 亚洲国产另类av| 在线观看亚洲a| 亚洲狠狠爱一区二区三区| 91久久精品国产91性色tv| 亚洲一区二区三区四区在线| 在线观看成人免费视频| 亚洲成人福利片| 91麻豆精品国产91久久久更新时间| 婷婷激情综合网| 日韩欧美国产一区在线观看| 极品美女销魂一区二区三区 | 国产剧情一区在线| 久久精品一二三| 成人免费看的视频| 亚洲欧美日韩国产成人精品影院 | 99精品欧美一区二区蜜桃免费| 国产精品天干天干在观线| a级高清视频欧美日韩| 一区二区三区久久| 欧美日韩一区二区三区四区| 日本美女一区二区三区视频| 精品欧美一区二区三区精品久久| 国产一本一道久久香蕉| 中文一区二区在线观看| 91久久免费观看| 日韩成人免费电影| 国产亚洲欧美激情| 色综合久久88色综合天天免费| 成人在线综合网| 亚洲免费观看高清完整 | 国产女同互慰高潮91漫画| 粉嫩绯色av一区二区在线观看 | 久久国产精品色| 国产偷国产偷亚洲高清人白洁| 91丨九色丨黑人外教| 污片在线观看一区二区| 国产日韩精品一区二区三区在线| 91丨九色丨黑人外教| 日本欧美在线看| 国产精品久久久久影院老司| 日本高清不卡一区| 久久99精品国产91久久来源| 亚洲欧洲无码一区二区三区| 777久久久精品| yourporn久久国产精品| 日韩电影在线一区| 1000精品久久久久久久久| 欧美精品亚洲一区二区在线播放| 国产成a人亚洲精品| 性做久久久久久久免费看| 国产午夜精品久久久久久免费视| 欧洲国内综合视频| 国产精品18久久久久久vr| 亚洲综合区在线| 国产日韩三级在线| 在线不卡中文字幕| 暴力调教一区二区三区| 精品系列免费在线观看| 亚洲一区二区三区三| 亚洲国产成人私人影院tom| 欧美久久免费观看| 91色porny蝌蚪| 国产美女一区二区三区| 日本视频中文字幕一区二区三区| 亚洲欧洲制服丝袜|