日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataGridView数据导入到Excel 中

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataGridView数据导入到Excel 中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • #region DataGridView數據顯示到Excel ?
  • /// <summary>? ?
  • /// 打開Excel并將DataGridView控件中數據導出到Excel ?
  • /// </summary>? ?
  • /// <param name="dgv">DataGridView對象 </param>? ?
  • /// <param name="isShowExcle">是否顯示Excel界面 </param>? ?
  • /// <remarks> ?
  • /// add com "Microsoft Excel 11.0 Object Library" ?
  • /// using Excel=Microsoft.Office.Interop.Excel; ?
  • /// </remarks> ?
  • /// <returns> </returns>? ?
  • publicbool DataGridviewShowToExcel(DataGridView dgv, bool isShowExcle)??
  • {??
  • ??? if (dgv.Rows.Count == 0)??
  • ??????? returnfalse;??
  • ??? //建立Excel對象? ?
  • ??? Excel.Application excel = new Excel.Application();??
  • ??? excel.Application.Workbooks.Add(true);??
  • ??? excel.Visible = isShowExcle;??
  • ??? //生成字段名稱? ?
  • ??? for (int i = 0; i < dgv.ColumnCount; i++)??
  • ??? {??
  • ??????? excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;??
  • ??? }??
  • ??? //填充數據? ?
  • ??? for (int i = 0; i < dgv.RowCount - 1; i++)??
  • ??? {??
  • ??????? for (int j = 0; j < dgv.ColumnCount; j++)??
  • ??????? {??
  • ??????????? if (dgv[j, i].ValueType == typeof(string))??
  • ??????????? {??
  • ??????????????? excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();??
  • ??????????? }??
  • ??????????? else?
  • ??????????? {??
  • ??????????????? excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();??
  • ??????????? }??
  • ??????? }??
  • ??? }??
  • ??? returntrue;??
  • }
  • #endregion?
  • #region DateGridView導出到csv格式的Excel ?
  • /// <summary> ?
  • /// 常用方法,列之間加\t,一行一行輸出,此文件其實是csv文件,不過默認可以當成Excel打開。 ?
  • /// </summary> ?
  • /// <remarks> ?
  • /// using System.IO; ?
  • /// </remarks> ?
  • /// <param name="dgv"></param> ?
  • privatevoid DataGridViewToExcel(DataGridView dgv)??
  • {??
  • ??? SaveFileDialog dlg = new SaveFileDialog();??
  • ??? dlg.Filter = "Execl files (*.xls)|*.xls";??
  • ??? dlg.FilterIndex = 0;??
  • ??? dlg.RestoreDirectory = true;??
  • ??? dlg.CreatePrompt = true;??
  • ??? dlg.Title = "保存為Excel文件";??
  • ?
  • ??? if (dlg.ShowDialog() == DialogResult.OK)??
  • ??? {??
  • ??????? Stream myStream;??
  • ??????? myStream = dlg.OpenFile();??
  • ??????? StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));??
  • ??????? string columnTitle = "";??
  • ??????? try?
  • ??????? {??
  • ??????????? //寫入列標題 ?
  • ??????????? for (int i = 0; i < dgv.ColumnCount; i++)??
  • ??????????? {??
  • ??????????????? if (i > 0)??
  • ??????????????? {??
  • ??????????????????? columnTitle += "\t";??
  • ??????????????? }??
  • ??????????????? columnTitle += dgv.Columns[i].HeaderText;??
  • ??????????? }??
  • ??????????? sw.WriteLine(columnTitle);??
  • ?
  • ??????????? //寫入列內容 ?
  • ??????????? for (int j = 0; j < dgv.Rows.Count; j++)??
  • ??????????? {??
  • ??????????????? string columnValue = "";??
  • ??????????????? for (int k = 0; k < dgv.Columns.Count; k++)??
  • ??????????????? {??
  • ??????????????????? if (k > 0)??
  • ??????????????????? {??
  • ??????????????????????? columnValue += "\t";??
  • ??????????????????? }??
  • ??????????????????? if (dgv.Rows[j].Cells[k].Value == null)??
  • ??????????????????????? columnValue += "";??
  • ??????????????????? else?
  • ??????????????????????? columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();??
  • ??????????????? }??
  • ??????????????? sw.WriteLine(columnValue);??
  • ??????????? }??
  • ??????????? sw.Close();??
  • ??????????? myStream.Close();??
  • ??????? }??
  • ??????? catch (Exception e)??
  • ??????? {??
  • ??????????? MessageBox.Show(e.ToString());??
  • ??????? }??
  • ??????? finally?
  • ??????? {??
  • ??????????? sw.Close();??
  • ??????????? myStream.Close();??
  • ??????? }??
  • ??? }??
  • }?
  • #endregion
  • #region DataGridView導出到Excel,有一定的判斷性 ?
  • /// <summary>? ?
  • ///方法,導出DataGridView中的數據到Excel文件? ?
  • /// </summary>? ?
  • /// <remarks> ?
  • /// add com "Microsoft Excel 11.0 Object Library" ?
  • /// using Excel=Microsoft.Office.Interop.Excel; ?
  • /// using System.Reflection; ?
  • /// </remarks> ?
  • /// <param name= "dgv"> DataGridView </param>? ?
  • publicstaticvoid DataGridViewToExcel(DataGridView dgv)??
  • {
  • ??? #region?? 驗證可操作性 ?
  • ?
  • ??? //申明保存對話框? ?
  • ??? SaveFileDialog dlg = new SaveFileDialog();??
  • ??? //默然文件后綴? ?
  • ??? dlg.DefaultExt = "xls ";??
  • ??? //文件后綴列表? ?
  • ??? dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";??
  • ??? //默然路徑是系統當前路徑? ?
  • ??? dlg.InitialDirectory = Directory.GetCurrentDirectory();??
  • ??? //打開保存對話框? ?
  • ??? if (dlg.ShowDialog() == DialogResult.Cancel) return;??
  • ??? //返回文件路徑? ?
  • ??? string fileNameString = dlg.FileName;??
  • ??? //驗證strFileName是否為空或值無效? ?
  • ??? if (fileNameString.Trim() == " ")??
  • ??? { return; }??
  • ??? //定義表格內數據的行數和列數? ?
  • ??? int rowscount = dgv.Rows.Count;??
  • ??? int colscount = dgv.Columns.Count;??
  • ??? //行數必須大于0? ?
  • ??? if (rowscount <= 0)??
  • ??? {??
  • ??????? MessageBox.Show("沒有數據可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);??
  • ??????? return;??
  • ??? }??
  • ?
  • ??? //列數必須大于0? ?
  • ??? if (colscount <= 0)??
  • ??? {??
  • ??????? MessageBox.Show("沒有數據可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);??
  • ??????? return;??
  • ??? }??
  • ?
  • ??? //行數不可以大于65536? ?
  • ??? if (rowscount > 65536)??
  • ??? {??
  • ??????? MessageBox.Show("數據記錄數太多(最多不能超過65536條),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);??
  • ??????? return;??
  • ??? }??
  • ?
  • ??? //列數不可以大于255? ?
  • ??? if (colscount > 255)??
  • ??? {??
  • ??????? MessageBox.Show("數據記錄行數太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);??
  • ??????? return;??
  • ??? }??
  • ?
  • ??? //驗證以fileNameString命名的文件是否存在,如果存在刪除它? ?
  • ??? FileInfo file = new FileInfo(fileNameString);??
  • ??? if (file.Exists)??
  • ??? {??
  • ??????? try?
  • ??????? {??
  • ??????????? file.Delete();??
  • ??????? }??
  • ??????? catch (Exception error)??
  • ??????? {??
  • ??????????? MessageBox.Show(error.Message, "刪除失敗 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);??
  • ??????????? return;??
  • ??????? }??
  • ??? }
  • ??? #endregion ?
  • ??? Excel.Application objExcel = null;??
  • ??? Excel.Workbook objWorkbook = null;??
  • ??? Excel.Worksheet objsheet = null;??
  • ??? try?
  • ??? {??
  • ??????? //申明對象? ?
  • ??????? objExcel = new Microsoft.Office.Interop.Excel.Application();??
  • ??????? objWorkbook = objExcel.Workbooks.Add(Missing.Value);??
  • ??????? objsheet = (Excel.Worksheet)objWorkbook.ActiveSheet;??
  • ??????? //設置EXCEL不可見? ?
  • ??????? objExcel.Visible = false;??
  • ?
  • ??????? //向Excel中寫入表格的表頭? ?
  • ??????? int displayColumnsCount = 1;??
  • ??????? for (int i = 0; i <= dgv.ColumnCount - 1; i++)??
  • ??????? {??
  • ??????????? if (dgv.Columns[i].Visible == true)??
  • ??????????? {??
  • ??????????????? objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();??
  • ??????????????? displayColumnsCount++;??
  • ??????????? }??
  • ??????? }??
  • ??????? //設置進度條? ?
  • ??????? //tempProgressBar.Refresh();? ?
  • ??????? //tempProgressBar.Visible?? =?? true;? ?
  • ??????? //tempProgressBar.Minimum=1;? ?
  • ??????? //tempProgressBar.Maximum=dgv.RowCount;? ?
  • ??????? //tempProgressBar.Step=1;? ?
  • ??????? //向Excel中逐行逐列寫入表格中的數據? ?
  • ??????? for (int row = 0; row <= dgv.RowCount - 1; row++)??
  • ??????? {??
  • ??????????? //tempProgressBar.PerformStep();? ?
  • ?
  • ??????????? displayColumnsCount = 1;??
  • ??????????? for (int col = 0; col < colscount; col++)??
  • ??????????? {??
  • ??????????????? if (dgv.Columns[col].Visible == true)??
  • ??????????????? {??
  • ??????????????????? try?
  • ??????????????????? {??
  • ??????????????????????? objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();??
  • ??????????????????????? displayColumnsCount++;??
  • ??????????????????? }??
  • ??????????????????? catch (Exception)??
  • ??????????????????? {??
  • ?
  • ??????????????????? }??
  • ?
  • ??????????????? }??
  • ??????????? }??
  • ??????? }??
  • ??????? //隱藏進度條? ?
  • ??????? //tempProgressBar.Visible?? =?? false;? ?
  • ??????? //保存文件? ?
  • ??????? objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,??
  • ??????????????? Missing.Value, Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,??
  • ??????????????? Missing.Value, Missing.Value);??
  • ??? }??
  • ??? catch (Exception error)??
  • ??? {??
  • ??????? MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);??
  • ??????? return;??
  • ??? }??
  • ??? finally?
  • ??? {??
  • ??????? //關閉Excel應用? ?
  • ??????? if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);??
  • ??????? if (objExcel.Workbooks != null) objExcel.Workbooks.Close();??
  • ??????? if (objExcel != null) objExcel.Quit();??
  • ?
  • ??????? objsheet = null;??
  • ??????? objWorkbook = null;??
  • ??????? objExcel = null;??
  • ??? }??
  • ??? MessageBox.Show(fileNameString + "\n\n導出完畢! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);??
  • ?
  • }
  • #endregion?

轉載于:https://www.cnblogs.com/lili503/p/3527331.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的DataGridView数据导入到Excel 中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。