最近在网上找了好多导EXCEL的文档说明以及代码 发现都不是很详细,对于我们这些菜鸟来说更是多了一点盲目,所以希望各位高手能够给予一个相信的答复!在下先谢了 ,日后如果谈的来 有见面的机会 我一定尽摆酒感谢!

解决方案 »

  1.   

    前两天我刚写了一个,仅供参考.
    public class frmDataGrid2Excel : System.Windows.Forms.Form
    {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null;
    private string strExcelFileName;
    private DataGrid[] aryDataGrid;
    private DataGrid dg;
    private Excel.Application myExcel;
    private Excel.Workbook myBook;
    private Excel.Worksheet mySheet;
    private Excel.Range myRange;
    private DataGridTableStyle dts;
    private DataGridColumnStyle dcs;
    private System.Data.DataTable dt;
    private DataView dv; public frmDataGrid2Excel(DataGrid[] p_aryDataGrid, string p_ExcelFileName)
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    aryDataGrid = p_aryDataGrid;
    strExcelFileName = p_ExcelFileName;
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    // 
    // frmDataGrid2Excel
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(640, 446);
    this.Name = "frmDataGrid2Excel";
    this.Text = "frmDataGrid2Excel"; }
    #endregion public void Convert()
    {
    object missing=Type.Missing;
    myExcel=new Excel.Application( );
    myExcel.SheetsInNewWorkbook = aryDataGrid.Length; //打开新文件
    myBook = myExcel.Application.Workbooks.Add(missing);
    myExcel.Visible=true;
    myExcel.ErrorCheckingOptions.NumberAsText = false;
    try
    {
    myExcel.Cursor = Excel.XlMousePointer.xlWait;
    myExcel.Interactive = false; Console.WriteLine(myExcel.ErrorCheckingOptions.BackgroundChecking.ToString());
    Console.WriteLine(myExcel.ErrorCheckingOptions.NumberAsText.ToString()); // myExcel.ScreenUpdating = false;
    for (int i = 0; i < aryDataGrid.Length; i++)
    {
    dg = aryDataGrid[i];
    mySheet = (Excel.Worksheet)myBook.Sheets.get_Item(i + 1);
    mySheet.Activate();

    dv = (DataView)dg.DataSource;
    int intRowCount = dv.Count;
    dt = dv.Table;
    dts = dg.TableStyles[dt.TableName];
    if (dg.Tag.ToString() == "")
    {
    mySheet.Name = dg.Name;
    }
    else
    {
    mySheet.Name = dg.Tag.ToString();
    }
    ArrayList aryColNames = new ArrayList();
    //列头及列的格式
    for (int j = 0; j <dts.GridColumnStyles.Count; j++)
    {
    dcs = dts.GridColumnStyles[j];
    if (dcs.Width > 0)
    {
    aryColNames.Add(dcs.MappingName); //列头
    myExcel.Cells[2, j + 1] = dcs.HeaderText;
    myRange = (Excel.Range)myExcel.Cells[2, j + 1];
    myRange.Font.Bold = true;
    myRange.Font.Size = 14;
    myRange.Font.Color = ColorTranslator.ToOle(Color.Blue);

    myRange = mySheet.get_Range(mySheet.Cells[2,j+1],mySheet.Cells[intRowCount + 3, j + 1]);
    myRange.NumberFormat  =  "@";
    if (dcs.Alignment == HorizontalAlignment.Center)
    {
    myRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
    }
    else if (dcs.Alignment == HorizontalAlignment.Left)
    {
    myRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
    }
    else
    {
    myRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
    }
    myRange.ColumnWidth = (int)dcs.Width / 5;

    } }
    int intColCount = aryColNames.Count; //填充数据
    for (int m = 0; m < intRowCount; m++)
    {
    for (int n = 0; n < intColCount; n++)
    {
    myExcel.Cells[m + 3, n + 1] = dv[m][aryColNames[n].ToString()].ToString();
    }
    ((Range)myExcel.Cells[m + 3, 1]).Activate();
    }
    //标题
    myRange = mySheet.get_Range(mySheet.Cells[1,1], mySheet.Cells[1,intColCount]);
    myRange.Merge(missing);
    myRange.FormulaR1C1 = mySheet.Name;
    myRange.Font.Bold = true;
    myRange.Font.Size = 18;
    // myRange.Height = 20;
    myRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //表格区
    myRange = mySheet.get_Range(mySheet.Cells[2,1], mySheet.Cells[intRowCount + 2, intColCount]);
    myRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; }
    }
    catch (Exception ee)
    {
    Console.WriteLine(ee.ToString());
    }
    finally
    {
    myExcel.Cursor = Excel.XlMousePointer.xlDefault;
    myExcel.Interactive = true;// myExcel.ScreenUpdating = true;
    }
    mySheet = (Excel.Worksheet)myBook.Sheets.get_Item(1);
    mySheet.Activate();
    ((Range)myExcel.Cells[1, 1]).Activate();
    myBook.SaveAs(strExcelFileName, missing, missing, missing, missing, missing,Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
    }
    }