数据 导出到Word 、excel

来源:互联网 发布:知乎live赚钱如何分配 编辑:程序博客网 时间:2024/05/17 07:48

#region 导出当前页DataGridView中的数据到Excel中,用流保存成xls文件. 这种方法比较好,不用引用Excel组件
  /// <summary> 
  /// 导出当前页DataGridView中的数据到EXcel中 
  /// </summary> 
  /// <param name="dataGridView">dataGridView</param> 
  /// <param name="progreesBar">progreesBar</param> 
  public void ExportTOExcelWithoutWidget(DataGridView gridView, ProgressBar progreesBar, SaveFileDialog saveFileDialog) //另存新档按钮 导出成Excel
  {
  if (gridView.Rows.Count == 0)
  {
  MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  return;
  }
  else
  {
  saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
  saveFileDialog.FilterIndex = 0;
  saveFileDialog.RestoreDirectory = true;
  saveFileDialog.CreatePrompt = true;
  saveFileDialog.Title = "导出文件保存路径";
  saveFileDialog.ShowDialog();
  progreesBar.Visible = true;
  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 < gridView.ColumnCount; i++)
  {
  if (i > 0)
  {
  str += "/t";
  }
  str += gridView.Columns[i].HeaderText;
  }
  sw.WriteLine(str);
  //写内容
  for (int j = 0; j < gridView.Rows.Count-1; j++)
  {
  string tempStr = "";
  for (int k = 0; k < gridView.Columns.Count; k++)
  {
  if (k > 0)
  {
  tempStr += "/t";
  }
  tempStr += gridView.Rows[j].Cells[k].Value.ToString();
  }
  sw.WriteLine(tempStr);
  progreesBar.Value += 100 / gridView.RowCount;
  }
  sw.Close();
  myStream.Close();
  progreesBar.Value = 100;
  MessageBox.Show("数据已经成功导出到:" + saveFileDialog.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
  progreesBar.Value = 0;
  progreesBar.Visible = false;
  }
  catch (Exception e)
  {
  MessageBox.Show(e.Message, "友情提示", MessageBoxButtons.OK);
  }
  finally
  {
  sw.Close();
  myStream.Close();
  }
  }
  }
  #endregion

 

 

 

////////////////////////////////////////////////////////////////////

 

 

 

#region 导出当前页DataGridView中的数据到Word中

  public void ExportDataGridViewToWord(DataGridView srcDgv, ProgressBar progreesBar, SaveFileDialog sfile)
  {
  if (srcDgv.Rows.Count == 0)
  {
  MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  return;
  }
  else
  {
  sfile.AddExtension = true;
  sfile.DefaultExt = ".doc";
  sfile.Filter = "(*.doc)|*.doc";
  if (sfile.ShowDialog() == DialogResult.OK)
  {
  progreesBar.Visible = true;
  object path = sfile.FileName;
  Object none = System.Reflection.Missing.Value;
  Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
  Microsoft.Office.Interop.Word.Document document = wordApp.Documents.Add(ref none, ref none, ref none, ref none);
  //建立表格
  Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs.Last.Range, srcDgv.Rows.Count, srcDgv.Columns.Count, ref none, ref none);
  try
  {
  for (int i = 0; i < srcDgv.Columns.Count; i++)//设置标题
  {
  table.Cell(0, i + 1).Range.Text = srcDgv.Columns[i].HeaderText;
  }
  for (int i = 1; i < srcDgv.Rows.Count; i++)//填充数据
  {
  for (int j = 0; j < srcDgv.Columns.Count; j++)
  {
  table.Cell(i + 1, j + 1).Range.Text = srcDgv[j, i - 1].Value.ToString();
  }
  progreesBar.Value += 100 / srcDgv.RowCount;
  }
  document.SaveAs(ref path, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none);
  document.Close(ref none, ref none, ref none);

  progreesBar.Value = 100;
  MessageBox.Show("数据已经成功导出到:" + sfile.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
  progreesBar.Value = 0;
  progreesBar.Visible = false;
  }
  catch(Exception e)
  {
  MessageBox.Show(e.Message, "友情提示", MessageBoxButtons.OK);
  }
  finally
  {
  wordApp.Quit(ref none, ref none, ref none);
  }
  }
  }
   
  } 
  #endregion