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

c# datagridview导出到excel

2011-04-12 15:52 423 查看
添加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;

}

方法2

用流保存成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();

}

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