winform datagridview控件使用

最近做項目時,顯示查詢結果總需要綁定到datagridview控件上顯示,總結了給datagridview綁定數據的方式,以及導出datagridview數據到excel表格,如有錯誤請多指教

1.直接綁定數據源,可以綁定的數據格式有List<T>,DataTable,DataSet等,

this.dataGridView1.DataSource = list;

this.dataGridView1.DataSource = table;

this.dataGridView1.DataSource =ds.Tables["表名"];

2.手動綁定datagridview指定列的數據,datagridview列如下圖:

綁定數據代碼如下:

DataTable dt = cdh.checkDB_typeValue(list_rd);
if (dt.Rows.Count>0){//dataGridView2.DataSource = dt;for (int i = 0; i < dt.Rows.Count; i++){DataGridViewRow dr = new DataGridViewRow();dataGridView2.Rows.Add(dr);dataGridView2.Rows[i].Cells["檔案類型"].Value = dt.Rows[i]["檔案類型"].ToString();dataGridView2.Rows[i].Cells["字段"].Value = dt.Rows[i]["字段"].ToString();dataGridView2.Rows[i].Cells["錯誤類型"].Value = dt.Rows[i]["錯誤類型"].ToString();dataGridView2.Rows[i].Cells["錯誤數據"].Value = dt.Rows[i]["錯誤數據"].ToString();dataGridView2.Rows[i].Cells["檔案號"].Value = dt.Rows[i]["檔案號"].ToString();}btn_export.Enabled = true;}
綁定datagridview數據

3.自動生成datagridview控件并綁定數據和單元格點擊事件

foreach (KeyValuePair<string, List<string>> item in ckImageMethod.errorFiles){//實例化tabpage對象TabPage tpage = new TabPage();tpage.Text = item.Key;tpage.AutoScroll = true;//實例化datagridview對象DataGridView dgv = new DataGridView();dgv.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;dgv.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;dgv.Location = new System.Drawing.Point(3, 3);dgv.Size = new System.Drawing.Size(tabControl2.Width - 15, tabControl2.Height - 35);//給datagridview添加單元格點擊事件dgv.CellContentClick += Dgv_CellContentClick;//給datagridview添加文本列DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();col1.HeaderText = "文件名";DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();col2.HeaderText = "文件路徑";//添加按鈕列DataGridViewButtonColumn col3 = new DataGridViewButtonColumn();col3.HeaderText = "操作";col3.Name = "btnModify";col3.DefaultCellStyle.NullValue = "打開文件";dgv.Columns.Add(col1);dgv.Columns.Add(col2);dgv.Columns.Add(col3);foreach (string filePath in item.Value){string path = filePath;//給datagridview添加一行數據,因為第三列時按鈕,所以不添加值也會默認添加按鈕dgv.Rows.Add(path.Substring(path.LastIndexOf('\\') + 1), path);}//添加datagridview控件到tabpage中
                    tpage.Controls.Add(dgv);//添加tabpage到tabControl中
                    tabControl2.TabPages.Add(tpage);}    
后臺添加datagridview控件并綁定數據

?單元格點擊事件:

private void Dgv_CellContentClick(object sender, DataGridViewCellEventArgs e){DataGridView dgv = sender as DataGridView;//點擊button按鈕事件if (dgv.Columns[e.ColumnIndex].Name == "btnModify" && e.RowIndex >= 0){if (e.RowIndex == (dgv.RowCount - 1)){return;}//說明點擊的列是DataGridViewButtonColumn列string path = dgv.Rows[e.RowIndex].Cells[1].Value.ToString();if (Directory.Exists(path)){//打開文件夾
                    System.Diagnostics.Process.Start(path);}else{//打開文件所在文件夾DirectoryInfo fi = new DirectoryInfo(path);System.Diagnostics.Process.Start(fi.Parent.FullName);}}}
單元格點擊事件

?4.導出datagridview數據到excel中,我做的比較麻煩,而且我導出的是datagridview綁定的數據源datatable,如果要導出datagridview中顯示的數據,要先把datagridview的數據存到datatable中,再導出。下面是導出方法

private void btn_export_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(txtPath.Text)){MessageBox.Show("保存路徑不能為空!", "提示");return;}Task tk = new Task(Way);//MessageBox.Show("正在導出請稍后...");lb1.Visible = true;lb1.Text = "數據導出中,請稍后...";txtPath.Visible = false;btn_export.Enabled = false;tk.Start();}private void Way(){dataexcel.DataExcelExport(dt, txtPath.Text, "錯誤數據導出", "EXCEL");MessageBox.Show("數據導出完成");btn_export.Enabled = true;txtPath.Visible = true;lb1.Visible = false;}
導出datagridview數據

調用的類的方法:

public class DataExcelExportHandle {public delegate void Del_error(string StrError);public static event Del_error aa;public void DataExcelExport(DataTable QueryTable, string FilePath, string TableName, string DbType){List<string> ErrorList = new List<string>();string Query = string.Empty;//數據導出語句try{//判斷Excel版本string StrVerSion = FilePath.Split('.')[1].ToString();string DataConnect = string.Empty;if (DbType == "EXCEL"){if (StrVerSion.ToLower() == "xls"){DataConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'";}if (StrVerSion.ToLower() == "xlsx"){//DataConnect = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + FilePath + ";Extended Properties='Excel 12.0 Macro; HDR = NO'";DataConnect = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + FilePath + ";Extended Properties='Excel 12.0 Xml; HDR = NO'";}}//else//{//    if (StrVerSion.ToLower() == "mdb")//    {//        DataConnect = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + FilePath;//        //判斷ACCESS數據文件是否存在  不存在則創建//        if (!File.Exists(FilePath))//        {//            Catalog catalog = new Catalog();//            catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + ";Jet OLEDB:Engine Type=5");//        }//    }//    if (StrVerSion.ToLower() == "accdb")//    {//        DataConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath;//        //判斷ACCESS數據文件是否存在  不存在則創建//        if (!File.Exists(FilePath))//        {//            ADOX.Catalog catalog = new ADOX.Catalog();//            catalog.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data?Source=" + FilePath + ";");//        }//    }//}//string ConnectStr = CurrencyHandle.GetXmlNumber("DataBaseDeploy", "SqlConnect");//DataTable dt = SqlDataBaseHandle.GetTable(StrDataQuery, ConnectStr);//根據表名字段動態創建表字段string CreateColumn = "create table " + TableName + " (";string QueryNumberStr = "insert into " + TableName + " (";for (int i = 0; i < QueryTable.Columns.Count; i++){CreateColumn = CreateColumn + QueryTable.Columns[i].ColumnName + " text,";QueryNumberStr = QueryNumberStr + QueryTable.Columns[i].ColumnName + ",";}QueryNumberStr = QueryNumberStr.TrimEnd(',');CreateColumn = CreateColumn.TrimEnd(',');CreateColumn = CreateColumn + ")";//創建表
                OleDataBaseHandle.OleConnectOpen(DataConnect);OleDataBaseHandle.OleImplement(CreateColumn);Query = QueryNumberStr + ") values(";for (int i = 0; i < QueryTable.Columns.Count; i++){Query = Query + "@" + QueryTable.Columns[i].ColumnName + ",";}Query = Query.Substring(0, Query.Length - 1);Query = Query + ")";int CountIndex = 1;//記錄數據條數string SysTable = TableName;#region 數據導出for (int i = 0; i < QueryTable.Rows.Count; i++){try{//當導出數據超過限制時將自動創建新的表if (DbType == "EXCEL"){if (StrVerSion.ToLower() == "xlsx"){if (i > CountIndex * 1000000){CreateColumn = CreateColumn.Replace(TableName, SysTable + CountIndex);OleDataBaseHandle.OleImplement(CreateColumn);Query = Query.Replace(TableName, SysTable + CountIndex);TableName = TableName + CountIndex;CountIndex++;}}else{if (i > CountIndex * 65000){CreateColumn = CreateColumn.Replace(TableName, SysTable + CountIndex);OleDataBaseHandle.OleImplement(CreateColumn);Query = Query.Replace(TableName, SysTable + CountIndex);TableName = TableName + CountIndex;CountIndex++;}}}List<OleDbParameter> oleList = new List<OleDbParameter>();for (int k = 0; k < QueryTable.Columns.Count; k++){OleDbParameter prop = null;try{if (QueryTable.Rows[i][k] == null){prop = new OleDbParameter("@" + QueryTable.Columns[k].ColumnName, "");}else{prop = new OleDbParameter("@" + QueryTable.Columns[k].ColumnName, QueryTable.Rows[i][k].ToString());}}catch (Exception excc){aa("導出失敗" + Query);ErrorList.Add(excc.Message);}oleList.Add(prop);}if (!OleDataBaseHandle.OleImplement(Query, oleList)){aa("導出失敗" + Query);ErrorList.Add("導出失敗" + Query);}}catch (Exception exx){aa(exx.Message + Query);ErrorList.Add(exx.Message + Query);}}#endregionOleDataBaseHandle.OleConnectColse();}catch (Exception ex){aa(ex.Message + Query);ErrorList.Add(ex.Message + Query);}finally{if (ErrorList != null && ErrorList.Count > 0){ToolHelper.ErrorInfoSave(ErrorList);}}}}
View Code

上面方法調用的ole操作類:

https://www.cnblogs.com/Li232/p/10813918.html

/// <summary>/// Ole操作類/// </summary>public class OleDataBaseHandle{private static OleDbConnection con = null;private static OleDbCommand cmd = null;/// <summary>/// 通過文件路徑 獲取文件的所有表名/// </summary>/// <param name="Filename">文件路徑</param>/// <returns></returns>public static DataTable GetFileTableName(string Filename){string DbConnect = string.Empty;try{DbConnect = GetConnect(Filename);//通過文件獲取連接字符串con = new OleDbConnection(DbConnect);con.Open();DataTable dt = new DataTable();dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });return dt;}catch (Exception){return null;}finally{if (cmd != null){cmd.Dispose();}if (con != null){if (con.State == ConnectionState.Open){con.Close();}}}}/// <summary>/// 通過文件路徑和表名獲取所有數據(現支持EXCEL2003和ACCESS2003)/// </summary>/// <param name="Filename">文件路徑</param>/// <param name="TableName">表名</param>/// <returns></returns>public static DataTable GetFileTableData(string Filename, string TableName){string DbConnect = string.Empty;try{DbConnect = GetConnect(Filename);//通過文件獲取連接字符串con = new OleDbConnection(DbConnect);con.Open();DataTable dt = new DataTable();cmd = new OleDbCommand("select * from [" + TableName + "]", con);OleDbDataAdapter dapter = new OleDbDataAdapter(cmd);dapter.Fill(dt);return dt;}catch{return null;}finally{if (cmd != null){cmd.Dispose();}if (con != null){if (con.State == ConnectionState.Open){con.Close();}}}}/// <summary>/// 通過數據文件和表名獲取該表的所有列(現支持EXCEL2003和ACCESS2003)/// </summary>/// <param name="Filename">文件路徑</param>/// <param name="TableName">文件表名</param>/// <returns></returns>public static DataTable GetFileTableName(string Filename, string TableName){List<string> ErrorList = new List<string>();OleDbCommand cmd = null;OleDbConnection con = null;string DbConnect = string.Empty;try{DbConnect = GetConnect(Filename);//通過文件獲取連接字符串con = new OleDbConnection(DbConnect);con.Open();DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, TableName, null });if (dt == null || dt.Rows.Count < 1){return null;}else{return dt;}}catch (Exception ex){ErrorList.Add(ex.Message);return null;}finally{if (cmd != null){cmd.Dispose();}if (con != null){if (con.State == ConnectionState.Open){con.Close();}}}}/// <summary>/// 通過語句執行返回結果true false/// </summary>/// <param name="StrQuery">執行的SQL語句</param>/// <returns></returns>public static bool OleImplement(string StrQuery, string ConnectStr){try{con = new OleDbConnection(ConnectStr);con.Open();cmd = new OleDbCommand(StrQuery, con);int a = cmd.ExecuteNonQuery();if (a != 0){return true;}else{return false;}}catch{return false;}finally{if (cmd != null){cmd.Dispose();}if (con != null){if (con.State == ConnectionState.Open){con.Close();}}}}/// <summary>/// 通過數據文件和表名獲取該表的所有列/// </summary>/// <param name="StrQuery">所執行的SQL語句</param>/// <returns></returns>public static bool OleImplement(string StrQuery){try{cmd = new OleDbCommand(StrQuery, con);int a = cmd.ExecuteNonQuery();if (a != 0){return true;}else{return false;}}catch (Exception exxx){return false;}}/// <summary>/// 通過連接字符串建立長鏈接/// </summary>/// <param name="StrConnect">連接數據庫字符串</param>public static void OleConnectOpen(string StrConnect){con = new OleDbConnection(StrConnect);con.Open();}/// <summary>/// 關閉長鏈接并釋放資源/// </summary>public static void OleConnectColse(){if (cmd != null){cmd.Dispose();}if (con != null){if (con.State == ConnectionState.Open){con.Close();con.Dispose();}}}/// <summary>/// 執行參數化SQL語句/// </summary>/// <param name="StrQuery">所執行的SQL語句</param>/// <param name="para">參數化集合</param>/// <returns></returns>public static bool OleImplement(string StrQuery, List<OleDbParameter> para){try{cmd = new OleDbCommand(StrQuery, con);foreach (var item in para){cmd.Parameters.Add(item);}cmd.ExecuteNonQuery();return true;}catch{return false;}}/// <summary>/// 通過文件路徑返回ADO連接字符串/// </summary>/// <param name="Filename">文件路徑</param>/// <returns></returns>public static string GetConnect(string Filename){string DbConnect = string.Empty;if (Filename.Split('.')[1].ToLower() == "xls"){DbConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + Filename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'";}else if (Filename.Split('.')[1].ToLower() == "xlsx"){DbConnect = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + Filename + ";Extended Properties='Excel 12.0 Macro; HDR = NO'";}else if (Filename.Split('.')[1].ToLower() == "mdb"){DbConnect = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + Filename;}else if (Filename.Split('.')[1].ToLower() == "accdb"){DbConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Filename;}else{DbConnect = null;}return DbConnect;}/// <summary>/// 執行參數化SQL語句/// </summary>/// <param name="StrQuery">所執行的SQL語句</param>/// <returns></returns>public static DataTable OleGetTable(string FilePath, string StrQuery){OleDbConnection objConn = null;DataTable dt = new DataTable();try{string StrVerSion = FilePath.Split('.')[1].ToString();string DataConnect = string.Empty;if (StrVerSion.ToLower() == "xls"){DataConnect = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";}if (StrVerSion.ToLower() == "xlsx"){DataConnect = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + FilePath + ";Extended Properties='Excel 12.0 Xml; HDR = NO'";}objConn = new OleDbConnection(DataConnect);objConn.Open();//打開連接//RegistryKey reg_TypeGuessRows = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Jet\4.0\Engines\Excel");//reg_TypeGuessRows.SetValue("TypeGuessRows", 65000);cmd = new OleDbCommand(StrQuery, objConn);OleDbDataAdapter adr = new OleDbDataAdapter();adr.SelectCommand = cmd;adr.Fill(dt);objConn.Close();//OleDbDataReader  reader = cmd.ExecuteReader();//dt.Load(reader); //直接把reader轉換為datatablereturn dt;}catch(Exception ex){ToolHelper.ErrorInfoSave(ex.Message);return null;}}}
上述方法中用到的ole操作類

推薦兩個百度到的導出datagridview數據的博客地址,這兩個寫的很簡單:

?

https://www.cnblogs.com/chaowang/p/6265698.html

https://www.cnblogs.com/kongxiaoshuang/p/6062368.html?

?

轉載于:https://www.cnblogs.com/Li232/p/10813330.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Node — 第五天

1. MySQL數據庫 phpstudy 數據庫服務器及圖形化軟件 軟件鏈接 鏈接&#xff1a;https://pan.baidu.com/s/1F8wdoMstHAJkINfDKDejsw 提取碼&#xff1a;xl3k 數據庫對于我們前端同學來說&#xff0c;就是一個了解。 對于不會變化的數據&#xff08;省、市、縣&#xff09;&…

iOS10 權限訪問崩潰

手機升級了 iOS10 Beta&#xff0c;然后用正在開發的項目 裝了個ipa包&#xff0c;發現點擊有關 權限訪問 直接Crash了&#xff0c;并在控制臺輸出了一些信息&#xff1a; This app has crashed because it attempted to access privacy-sensitive data without a usage descr…

Node — 第六天(前后端分離)及(身份驗證)

綜合應用服務端知識點搭建項目 下載安裝所需的第三方模塊 npm init -y npm i express cors mysql # express 用于搭建服務器 # cors 用于解決跨域 # mysql 用于操作數據庫# 后面用到什么&#xff0c;再下載創建app.js 之前&#xff0c;我們開啟一個服務器&#xff0c;js文件…

繼承上機作業

1、實現如下類之間的繼承關系&#xff0c;并編寫Music類來測試這些類 2、編寫一個Java應用程序&#xff0c;該程序包括3個類&#xff1a;Monkey類、People類和主類E。要求&#xff1a; (1) Monkey類中有個構造方法&#xff1a;Monkey (String s)&#xff0c;并且有個public voi…

ApplePay集成教程

Apple Pay運行環境&#xff1a;iPhone6以上設備&#xff0c;操作系統最低iOS9.0以上&#xff0c;部分信息設置需要iOS9.2以上。目前還不支持企業證書添加。 環境搭建好后可以在模擬器上面運行&#xff0c;xcode7.2.1iPhone6SP9.2系統下&#xff0c;系統會綁定幾種虛擬的銀行卡…

Node — 第七天 (大事件項目接口實現一)

關于JS錯誤處理 node中和mysql中的錯誤處理 node和MySQL提供的方法&#xff0c;已經對錯誤信息進行了封裝&#xff0c;只需要使用 err.message 即可獲取到錯誤信息。 比如&#xff1a; const fs require(fs); // 讀取一個不存在的文件 fs.readFile(abcd.txt, (err, data) …

1.Consul 簡介和環境搭建

1.什么是 Consul Consul 是 service mesh(服務網格)的一個解決方案&#xff0c;它提供了諸如服務發現&#xff0c;配置和隔離等功能的一整套控制平面(control plane)。開發人員可以根據需要單獨使用這些功能點&#xff0c;也可以將他們整合成為一個完整的service mesh。Consul …

Node — 第八天 (大事件項目接口實現二)

如何處理MySQL的錯誤 MySQL的錯誤信息&#xff0c;可以通過err來獲取。這是沒有問題的。 但是&#xff0c;我們加入了Promise&#xff0c;Promise中的錯誤&#xff0c;在外部是獲取不到的&#xff0c;只能使用Promise相關方法來獲取錯誤信息。 解決方法一 使用 JS原生的 tr…

在local模式下的spark程序打包到集群上運行

一、前期準備 前期的環境準備&#xff0c;在Linux系統下要有Hadoop系統&#xff0c;spark偽分布式或者分布式&#xff0c;具體的教程可以查閱我的這兩篇博客&#xff1a; Hadoop2.0偽分布式平臺環境搭建 Spark2.4.0偽分布式環境搭建 然后在spark偽分布式的環境下必須出現如下八…

Effective Objective-C 2.0 初讀小結

1.對于OC中的對象聲明例如NSObject *obj1 [NSObject new];, obj1這個指針變量是分配在棧上的, 他指向的是這一個分配在堆上面的實例對象, 如果進行下面的賦值操作NSObject *obj2 obj1;,那么并沒有新生成一個實例對象, 只是在棧上分配了一個新的指針變量obj2, 而obj2和obj1指向…

APS系統對制造企業到底有多重要?看完這5點你就明白了

第一個問題&#xff1a;需要APS嗎&#xff1f; APS是否重要&#xff0c;不能從其所體現的軟件工具或系統角度來說&#xff0c;而應該從業務角度來說。對于制造工廠和車間的運行而言&#xff0c;計劃是核心的業務。就如同那句俗話說的&#xff0c;沒有規矩不成方圓&#xff0c;領…

Node — 第九天 (大事件項目接口實現三)

文章管理接口 設計數據表 添加文章接口 編寫接口&#xff0c;使用postman模擬提交formdata類型的數據 在article.js 中&#xff0c;加入 /add 路由 postman模擬提交formdata類型的數據 multer處理文件上傳 下載安裝multer 加載模塊 const multer require(multer) 配置上…

Python之爬蟲-段子網

Python之爬蟲-段子網 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requestsresponse requests.get(https://ishuo.cn) data response.text print(data) r re.findall(<div class"content">(.*?)</div>,data) f…

Node — 第九天 (ES6降級 and 發布屬于自己的[第三方模塊]包)

ES6降級處理 因為 ES 6 有瀏覽器兼容性問題&#xff0c;可以使用一些工具進行降級處理&#xff0c;例如&#xff1a;babel 降級處理 babel 的使用步驟 安裝 Node.js命令行中安裝 babel配置文件 .babelrc運行命令&#xff0c;完成降級 項目初始化 (項目文件夾不能有中文) npm …

Vue — 第一天(極速入門)

基本介紹 vue是什么 目標&#xff1a;了解vue的一些基礎概念。 官方網站&#xff1a; https://cn.vuejs.org/ vue是&#xff1a;漸進式javascript框架。 兩組概念 &#xff08;1&#xff09;框架 庫。只提供一些API給開發者使用。jquery 是一個js庫框架。擁有自己的規則和…

python類和實例化

簡答介紹類和實例python是面向對象的語言&#xff0c;最主要的就是類和實例&#xff0c;類是抽象的模版創建一個類class Studen(object),class 后接類名&#xff0c;定義的類名大些字母開頭&#xff0c;object為類的繼承&#xff0c;沒有合適的繼承類用object類&#xff0c;這是…

pjsip庫分析

http://blog.chinaunix.net/space.php?uid287570&doblog&cuid728411 如果你對SIP/VoIP技術感興趣,哪希望你不要錯過:),如果你對寫出堪稱優美的Code感興趣,那么你也不可錯過:)這期間我想分析一下一個實際的協議棧的設計到實現的相關技術,算是自己的一個學習經歷記錄.最…

Vue — 第二天(v-model和過濾器)

VUE-02-v-model和過濾器 昨日反饋與回顧 代碼倉庫的問題 不要修改你克隆下來的倉庫中任意代碼&#xff0c;否則&#xff0c;下次pull時&#xff0c;可能會報錯&#xff0c;從而得到不到最新的代碼。 如果已經遇到了這個沖突&#xff1a; 解決沖突(git 中解決沖突)把關鍵代碼…

Count

題目鏈接&#xff1a;點這里 題目意思&#xff1a;令f(x)表示<x的正整數中與x互質的數的平均數*2&#xff0c;求sigma(f(i)^k),L<i<R Solution: 首先&#xff0c;我們定義\(S(x)\sum_{gcd(a,x)1}a\)&#xff0c;因為gcd(a,x)1&#xff0c;所以對于任意a&#xff0c;滿…

牛人iOS開發系列--音頻播放、錄音、視頻播放、拍照、視頻錄制

概覽 隨著移動互聯網的發展&#xff0c;如今的手機早已不是打電話、發短信那么簡單了&#xff0c;播放音樂、視頻、錄音、拍照等都是很常用的功能。在iOS中對于多媒體的支持是非常強大的&#xff0c;無論是音視頻播放、錄制&#xff0c;還是對麥克風、攝像頭的操作都提供了多套…