DataGridView数据导入到Excel 中
生活随笔
收集整理的這篇文章主要介紹了
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 中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx工作原理及配置
- 下一篇: UIApplication的作用