是这样的,我3个月前做毕业设计时候问过这个问题,想把datagrid里的数据导出到EXCEL表格,当时碰到数据顺序混乱的问题就放弃了,但是现在做项目必须要实现这个功能.求个完整的方法...比较急,
因为以前搞过,所以只要老大们点化下,,就是数据怎么排,按原来的datagrid排序就可以,欢迎你们贴代码..谢谢各位了
因为以前搞过,所以只要老大们点化下,,就是数据怎么排,按原来的datagrid排序就可以,欢迎你们贴代码..谢谢各位了
解决方案 »
- 集合
- 为什么使用C#实现进程注入 100分 快来拿
- C# socket 接收报文是否有大小限制?
- %%%%%%%%%%%%%% 引号的使用问题 %%%%%%%%%%%%%%
- 用C#.net写在线播放视频........高手帮忙啊!!!急用在线等待!.................
- [求助]如何在程序异常退出时生成dump文件
- 请问各位大虾:如何在FORM的ONMOUSEMOVE的事件中判断鼠标左键是按下的?
- 怎样将8个值(0或1)放在一个字节中?
- XML 中数据能不能动态添加
- ★★★★★专用C#资料FTP空间开通★★★★★
- 如何在button的text 属性中添加 下划线?
- 使用JustinIO类做串口通信的问题
http://www.jaron.cn/chs_scripts/9/2005-07/20050713014047-101704.html
{
if (ds == null) return; string saveFileName = "";
bool fileSaved = false;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = FileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消 Excel.Application xlApp = new Excel.Application(); if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您未安装Excel");
return;
} Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
Excel.Range range; string oldCaption = pb_Export.Text;
long totalCount = ds.Tables[0].Rows.Count;
long rowRead = 0;
float percent = 0; //worksheet.Cells[1, 1] = "A座销售记录";
//写入字段
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName;
range = (Excel.Range)worksheet.Cells[1, i + 1];
range.Interior.ColorIndex = 15;
range.Font.Bold = true; }
//写入数值
pb_Export.Visible = true;
for (int r = 0; r < ds.Tables[0].Rows.Count; r++)
{
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = "'" + ds.Tables[0].Rows[r][i];
}
rowRead++;
percent = ((float)(100 * rowRead)) / totalCount;
pb_Export.Position = Convert.ToInt32(percent);
pb_Export.Text = "正在导出数据[" + percent.ToString("0.00") + "%]...";
Application.DoEvents();
}
pb_Export.Visible = false;
pb_Export.Text = oldCaption; range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[ds.Tables[0].Rows.Count + 1, ds.Tables[0].Columns.Count]);
range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null); range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin; if (ds.Tables[0].Columns.Count > 1)
{
range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
} if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
fileSaved = true;
}
catch (Exception ex)
{
fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
}
}
else
{
fileSaved = false;
}
xlApp.Quit();
GC.Collect();//强行销毁
if (fileSaved && File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); }
,winFOrm的话可以用楼上写的用interop.Office的方式
让我看看你们是怎么实现的
我的问题是数据都是加在后面,没有按datagrid里的那么排列。导致数据混乱,那样导出的数据也就没有意义了。
http://dotnet.aspx.cc/ShowDetail.aspx?id=4EB79F05-B9A4-4E8A-836F-864393F40405
另外你要用-引用-Com-Excel