您的位置:首页 > 编程语言 > C#

c# datagridview导出到excel【转载】

2008-06-21 10:11 537 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: