新人求教,如何将datagridview中指定的几列放到datatable里导出?

敲代码的狗 2016-10-04 03:07:39
比如我标记了datagridview的1 3 4列,然后导出到excel只有这3列,该怎么做?
...全文
280 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1读到标记的单元格 2写到excel指定单元格 3循环上述 写程序先明白该掌握哪些,写代码就有的放矢了。 代码就不写了,可参考的代码一搜大堆,这是参考。
xinbada1985 2016-10-05
  • 打赏
  • 举报
回复
选哪列写哪列!在列输出里面把没选的排除就可以了
xinbada1985 2016-10-05
  • 打赏
  • 举报
回复
以下两种方法参考一下: 方法一: public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle) { //建立Excel对象 Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); try { if (app == null) { return false; } app.Visible = isShowExcle; Workbooks workbooks = app.Workbooks; _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); Sheets sheets = workbook.Worksheets; _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); if (worksheet == null) { return false; } string sLen = ""; //取得最后一列列名 char H = (char)(64 + gridView.ColumnCount / 26); char L = (char)(64 + gridView.ColumnCount % 26); if (gridView.ColumnCount < 26) { sLen = L.ToString(); } else { sLen = H.ToString() + L.ToString(); } //标题 string sTmp = sLen + "1"; Range ranCaption = worksheet.get_Range(sTmp, "A1"); string[] asCaption = new string[gridView.ColumnCount]; for (int i = 0; i < gridView.ColumnCount; i++) { asCaption[i] = gridView.Columns[i].HeaderText; } ranCaption.Value2 = asCaption; //数据 object[] obj = new object[gridView.Columns.Count]; for (int r = 0; r < gridView.RowCount - 1; r++) { for (int l = 0; l < gridView.Columns.Count; l++) { if (gridView[l, r].ValueType == typeof(DateTime)) { obj[l] = gridView[l, r].Value.ToString(); } else { obj[l] = gridView[l, r].Value; } } string cell1 = sLen + ((int)(r + 2)).ToString(); string cell2 = "A" + ((int)(r + 2)).ToString(); Range ran = worksheet.get_Range(cell1, cell2); ran.Value2 = obj; } //保存 workbook.SaveCopyAs(fileName); workbook.Saved = true; } finally { //关闭 app.UserControl = false; app.Quit(); } return true; } 方法二 用流保存成xls文件. 这种方法比较好,不用引用Excel组件. 下面是具体例子,可以参考 using System.IO; /// <summary> /// 另存新档按钮 /// </summary> private void SaveAs() //另存新档按钮 导出成Excel { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDialog.Title = "Export Excel File To"; saveFileDialog.ShowDialog(); Stream myStream; myStream = saveFileDialog.OpenFile(); //StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312")); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0)); string str = ""; try { //写标题 for (int i = 0; i < dgvAgeWeekSex.ColumnCount; i++) { if (i > 0) { str += "\t"; } str += dgvAgeWeekSex.Columns[i].HeaderText; } sw.WriteLine(str); //写内容 for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++) { string tempStr = ""; for (int k = 0; k < dgvAgeWeekSex.Columns.Count; k++) { if (k > 0) { tempStr += "\t"; } tempStr += dgvAgeWeekSex.Rows[j].Cells[k].Value.ToString(); } sw.WriteLine(tempStr); } sw.Close(); myStream.Close(); } catch (Exception e) { MessageBox.Show(e.ToString()); } finally { sw.Close(); myStream.Close(); } }
nonocast 2016-10-04
  • 打赏
  • 举报
回复
把绑定到datagridview的数据写到excel上,和datagridview无关。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧