C# winform 如何导出EXCEL

skyctr 2010-10-28 04:48:49
winform 中的panl内有datagridview 及一些lable ,请教如何实现将整个panl的数据导出到EXCEL中?
...全文
836 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jakyo107 2010-10-29
  • 打赏
  • 举报
回复
先把lable文本值添加到Excel中
再遍历datagridview添加到Excel中去。

Excel操作知识总集:http://www.cnblogs.com/peterzb/archive/2009/07/06/1517395.html
loveyan52112 2010-10-29
  • 打赏
  • 举报
回复
其实就是相当于数据库一样的用。。代码你看了就知道了,
loveyan52112 2010-10-29
  • 打赏
  • 举报
回复
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
DataSet ds= new DataSet();
using(OleDbConnection OleConn = new OleDbConnection(strConn))
{
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);

OleDaExcel.Fill(ds);
OleConn.Close();
}
foreach(DataRow dr in ds.Tables[0].Rows)
{
//遍历Console.Write(dt[""].ToString()+"\n");
小海贼 2010-10-29
  • 打赏
  • 举报
回复
给你一个将datagridview 数据导出excel的例子,不用引用什么Excel的,直接把StreamWriter转换为excel 文件
private void DataGridViewToExcel(DataGridView dgv)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = false;
dlg.Title = "保存为Excel文件";
dlg.FileName = this.comViewName.Text + DateTime.Now.ToString("yyMMddHHmmss");

if (dlg.ShowDialog() == DialogResult.OK)
{
Stream myStream;
myStream = dlg.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string columnTitle = "";
try
{
//写入列标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
columnTitle += "\t";
}
columnTitle += dgv.Columns[i].HeaderText;
}
sw.WriteLine(columnTitle);

//写入列内容
for (int j = 0; j < dgv.Rows.Count; j++)
{
string columnValue = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0)
{
columnValue += "\t";
}
if (dgv.Rows[j].Cells[k].Value == null)
columnValue += "";
else
columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
}
sw.WriteLine(columnValue);
}
sw.Close();
myStream.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}
loveflydhl 2010-10-29
  • 打赏
  • 举报
回复
代码很多。。。
萤火架构 2010-10-29
  • 打赏
  • 举报
回复
如果都是文字,使用myxls
如果还有别的,使用Com组件

http://blog.bossma.cn/dotnet/csharp-exorpt-excel-process-kill/
http://blog.bossma.cn/dotnet/myxls-export-excel/
达不溜来多多 2010-10-29
  • 打赏
  • 举报
回复
关注学习下
程先森 2010-10-29
  • 打赏
  • 举报
回复
        private void ExportFile()
{
try
{
string filename = "";
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
saveFileDialog1.Title = "保存文件";

saveFileDialog1.FileName = this.Text + @".xls";
if ((saveFileDialog1.ShowDialog()) == DialogResult.OK)
{
filename = saveFileDialog1.FileName;
this.ultraGridExcelExporter1.Export(this.ultraGrid1, filename);
System.Diagnostics.ProcessStartInfo st = new System.Diagnostics.ProcessStartInfo(filename);
st.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
System.Diagnostics.Process.Start(st);
MessageBox.Show("数据导出成功!!!");
}
else
{
return;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
MessageBox.Show("数据导出出错!!!");
}
finally
{
//ok
}
}
Naga 2010-10-29
  • 打赏
  • 举报
回复
............................
mayonglong 2010-10-29
  • 打赏
  • 举报
回复
上面好全,收藏~
songcan 2010-10-29
  • 打赏
  • 举报
回复
guangzhu
醒子宇 2010-10-28
  • 打赏
  • 举报
回复
导入我知道
peterb 2010-10-28
  • 打赏
  • 举报
回复
liangchencf 2010-10-28
  • 打赏
  • 举报
回复
如果你的文本都是简单的字符串,你可以直接用tab字符分割列的形式写到一个文本文件,然后把那个文本文件的后缀写成.xls哈哈哈
wuyq11 2010-10-28
  • 打赏
  • 举报
回复
foreach(Control c in this.panel1.Controls)
{
if(c is DataGridView){}
if(c is Label){}
}
datagridview导出EXCEL
http://topic.csdn.net/u/20100312/14/4159d5ec-43ad-4f41-bc73-9a97421eadc6.html
lantianxiadeyu 2010-10-28
  • 打赏
  • 举报
回复
自定义一个将DataGridView控件中数据导出到Excel函数
/// <summary>
/// 将DataGridView控件中数据导出到Excel
/// </summary>
/// <param name="gridView">DataGridView对象</param>
/// <param name="isShowExcle">是否显示Excel界面</param>
/// <returns></returns>
public bool ExportDataGridview(DataGridView gridView,bool isShowExcle)
{
if (gridView.Rows.Count == 0)
return false;
//建立Excel对象
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle;
//生成字段名称
for (int i = 0; i < gridView.ColumnCount; i++)
{
excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < gridView.RowCount-1; i++)
{
for (int j = 0; j < gridView.ColumnCount; j++)
{
if (gridView[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + gridView[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
}
}
}
return true;
}
Brian_wh 2010-10-28
  • 打赏
  • 举报
回复
class ExportByDataGridView
{
protected internal ExportByDataGridView(DataGridView DGV,ExcelExport excelExport)
{
this.dgv = DGV;
this.excelExport = excelExport;
}

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int id);

protected internal DataGridView dgv { get; set; }
protected internal ExcelExport excelExport { get; set; }

private object m_objOpt = System.Reflection.Missing.Value;
protected internal ExcelW.Application MyXls { get; set; }
protected internal ExcelW.Workbook workbook { get; set; }


//导出
protected internal void Export()
{
workbook = MyXls.Workbooks.Add(ExcelW.XlWBATemplate.xlWBATWorksheet);

ExcelW.Worksheet outBoxWorkSheet = (ExcelW.Worksheet)workbook.Worksheets[1];
outBoxWorkSheet.Name = "sheet1";

//显示表头
for (int i = 0; i < dgv.ColumnCount; i++)
{
MyXls.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
this.excelExport.Value++;
}
//显示内容
int outBoxCount = dgv.RowCount;
for (int i = 0; i < outBoxCount; i++)
{
//excelApp.Cells[i + 3, 1] = i + 0;

for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j,i].Value != null)
{
if (dgv[j, i].Value.GetType() == typeof(string))
{
MyXls.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
MyXls.Cells[i + 2, j + 1] = dgv[j,i].Value.ToString();
}
}
this.excelExport.Value++;
}
}

workbook.SaveCopyAs(excelExport.filePath);
if (excelExport.ShowAfterExport)
MyXls.Application.Visible = true;
else
{
try
{
if (MyXls != null)
{
IntPtr t = new IntPtr(MyXls.Hwnd);
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
}
catch
{
}
}
}
}


以上为DataGridView导出到Excel 仅供参考,如果要将label内容也导出到Excel就需要在导出的过程中进行修改了
dai821 2010-10-28
  • 打赏
  • 举报
回复
这个确实得学习下,主要思想是安装EXCEL,然后再添加office的Office.Interop.Excel引用,在代码里面要USING下,然后就能操作了,新建EXCEL文件,新建工作簿,对工作簿里面数据操作,等等。。。在C#中循环写入就好了,大概思想就是这样,刚把VS卸了没法给你写了,具体代码你可以百度上搜下,挺多的,

这个导出功能用的超多,而且要求也不只是导出这么简单,多学习,自己多敲敲,很有用。。。。
xy325432 2010-10-28
  • 打赏
  • 举报
回复
学习··
帮顶··
浪子-无悔 2010-10-28
  • 打赏
  • 举报
回复
datagid里面的数据导出到EXCEL还差不多,
你还想讲label 也导出到EXCEL 。。。不会。。。期待~~~~

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧