c# datagridview导出到excel【转载】 http://hi.baidu.com/weizier/blog/item/8212caea1123b4d6d439c9fe.html

本作者使用的是方法二:

方法一:添加dll引用

右击选择你所在的项目的“引用”,选择“添加引用”。

弹出“添加引用”对话框。

选择“COM”选项卡。

选择“Microsoft Excel 11.0 Object Library”

单击“确定”按钮。

代码

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();

}

}

方法三

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Interop.Excel;
namespace AssetsUI {
 public partial class FrmPrint : Form {
  DataSet publicDs = null;
  //Form main=null;
  public FrmPrint(System.Data.DataSet privateDs) {//System.Data.DataSet privateDs
   publicDs = privateDs;
   //main=f;
   InitializeComponent();
  }
  string filePath="";
  System.Data.DataTable dt=new System.Data.DataTable();
  DataSet ds=new DataSet();
  private void btnOpen_Click(object sender, EventArgs e) {
   if(DialogResult.OK==this.saveFileDialog1.ShowDialog()){//打开“打开文件对话框”
    filePath=this.saveFileDialog1.FileName;
    this.txtFileName.Text=filePath;
   }
  }
  public void print(){
   int rowIndex = 1;//行起始坐标
   int colIndex = 0;//列起始坐标
   ApplicationClass EXL = new ApplicationClass();
   _Workbook WBook;
   _Worksheet WSheet;
   if (EXL == null) {
    throw (new Exception("EXCEL没有安装!"));
   }
   WBook = EXL.Workbooks.Add(true);
   WSheet = (_Worksheet)WBook.ActiveSheet;
   WSheet.Name = this.txtCaption.Text;//"我的Excel";//表名字
   //---------------------
   foreach (DataColumn col in publicDs.Tables[0].Columns)
    {
    colIndex++;
    WSheet.Cells[1, colIndex] = col.ToString();
    WSheet.get_Range(WSheet.Cells[4, colIndex], WSheet.Cells[4, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
   //colIndex++;
   //WSheet.Cells[4, colIndex] = "列2";
   //WSheet.get_Range(WSheet.Cells[4, colIndex], WSheet.Cells[4, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
    }
   
   
    foreach(DataRow row in publicDs.Tables[0].Rows)
    {
     colIndex = 0;
     rowIndex++;
     foreach (DataColumn c in publicDs.Tables[0].Columns){
      colIndex++;
      WSheet.Cells[rowIndex, colIndex] = row[colIndex-1].ToString();
      WSheet.get_Range(WSheet.Cells[rowIndex, colIndex],WSheet.Cells[rowIndex, colIndex]).HorizontalAlignment =Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
                 }
    }
    //定义一个使用缺省参数的对象
    object oMissiong = System.Reflection.Missing.Value;
    WSheet.SaveAs(filePath, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
    WBook.Save();
    //停止excel应用程序
    EXL.Quit();
    //释放资源
    System.Runtime.InteropServices.Marshal.ReleaseComObject(WSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(WBook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(EXL);
    System.GC.Collect();//强制垃圾回收
   //--------end--------------
  }
  
  private void FrmPrint_Load(object sender, EventArgs e) {
   this.txtCaption.Text=DateTime.Now.ToShortDateString();
   dt=publicDs.Tables[0].Clone();
   //foreach(DataColumn c in dt.Columns){
   //for(int i=0;i<dt.Columns.Count;i++){
   //    dt.Columns.Add("a");
   //}
   dataGridView1.DataSource = dt;
  }
  private void btnOK_Click(object sender, EventArgs e) {
   print();
  }
 }
}

c# datagridview导出到excel【转载】的更多相关文章

  1. DataGridView导出到Excel的三个方法

    #region DataGridView数据显示到Excel /// <summary> /// 打开Excel并将DataGridView控件中数据导出到Excel /// </s ...

  2. C# - VS2019 DataGridView导出到Excel的三种方法

    //原文出处:http://www.yongfa365.com/Item/DataGridViewToExcel.html 1 #region DataGridView数据显示到Excel /// & ...

  3. Winform 中 dataGridView 导出到Excel中的方法总结

    最近,在做CS端数据导出到Excel中时网上找了很多代码感觉都不是自己想要的,通过自己的整理归纳得到一个比较通用的方法,就给大家分享一下: 该方法需要用到两个参数(即对象),一个  DataGridV ...

  4. winform DataGridView 导出到Excel表格 分类: WinForm 2014-07-04 10:48 177人阅读 评论(0) 收藏

    public bool ExportDataGridview(DataGridView gridView)         {             if (gridView.Rows.Count ...

  5. DataGridView 导出到Excel

    #region 导出四个表格到Excel /// <summary> /// 导出四个表格到Excel /// </summary> /// <param name=&q ...

  6. [WinForm]dataGridView导出到EXCEL

    方法一: SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Execl files (*.xls)|*.xls"; ...

  7. WinForm中DataGridView导出为Excel(快速版)

    public static void ExportExcel(DataGridView myDGV, string fileName) { string saveFileName = fileName ...

  8. datagridview导出到excel

    Microsoft.Office.Interop.Excel.Range range = null; string saveFileName = ""; bool fileSave ...

  9. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

随机推荐

  1. 使用HttpClient进行http post/get方法的调用,以及使用dom4j解析xml

    import java.io.IOException; import java.util.List; import javax.servlet.ServletInputStream; import j ...

  2. 百度之星资格赛——Disk Schedule(双调旅行商问题)

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  3. Linux内核里的DebugFS

    DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据.类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上, ...

  4. Linux下安装ACE

      ACE 5.6下载地址:http://download.dre.vanderbilt.edu/ 方法一: 1. 解开ACE-install.sh文件    tar –zxvf ACE-5.6.ta ...

  5. IPv6 neighbor discovery

    IPv6 neighbor discovery By stretch | Thursday, August 28, 2008 at 5:03 a.m. UTC Neighbor Discovery P ...

  6. Windows下安装破解JIRA6.3.6

    相关工具下载地址:http://pan.baidu.com/s/1kT9xZEJ 安装环境: WindowsXP MySQL-5.5.28 JDK1.6.0_21 JIRA功能全面,界面友好,安装简单 ...

  7. Ⅶ.spring的点点滴滴--自定义对象行为

    承接上文 自定义对象行为 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class lifeCycle : Spring.Objects.Factory. ...

  8. linux下svn服务搭建

    安装svn需要依赖apr和apr-util这两个软件,所以先安装这两个软件 下载安装APR wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz .ta ...

  9. FTP上传下载

    使用的是apache开源包commons-net-3.3.jar所提供的FTPClient FTP服务器使用Quick Easy FTP Server 4.0.0(服务器ip为192.168.31.1 ...

  10. verilog 常用系统函数及例子

    1.打开文件 integer file_id; file_id = fopen("file_path/file_name"); 2.写入文件:$fmonitor,$fwrite,$ ...