急需C#winform下面的一个datagrid导EXCEL的代码! 最近在网上找了好多导EXCEL的文档说明以及代码 发现都不是很详细,对于我们这些菜鸟来说更是多了一点盲目,所以希望各位高手能够给予一个相信的答复!在下先谢了 ,日后如果谈的来 有见面的机会 我一定尽摆酒感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前两天我刚写了一个,仅供参考. 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); } } 页面调试时,显示无法显示该页面,请教各位高人! 高手请进 TreeView全选的问题。。。 将string类型转换为decimal类型 我的 皮 皮 皮肤 在别人机器上 按钮点击一次变量加1再点击一次再加1 DataTextField和DataValueField 搞不清啊 求C#高手指点两个DataTable间循环问题。 float小数位数的问题 Pro C# 2008 and the .NET 3.5 Platform 如何让richtextbox不可编辑 寻VC#的开源原代码
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);
}
}