asp.net传数据到execl文件的问题 asp.net(C#),比入我有个execl文件,名为:aaaa.xls(已经设计好格式),放在某个具体目录下的,我要把从asp.net中产生数据传到aaaa.xls文件中,在传的时候我要能控制响应的数据传到aaaa.xls中响应的单元中,如:cell(1,2)="aaa",cell(4,6)="sdsd"等等,请给代码,急急急急急急急急急急急急急急急急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected void ExportExcel() { gridbind(); if(ds1==null) return; string saveFileName="";// bool fileSaved=false; SaveFileDialog saveDialog=new SaveFileDialog(); saveDialog.DefaultExt ="xls"; saveDialog.Filter="Excel文件|*.xls"; saveDialog.FileName ="Sheet1"; saveDialog.ShowDialog(); saveFileName=saveDialog.FileName; if(saveFileName.IndexOf(":")<0) return; //被点了取消// excelapp.Workbooks.Open (App.path & 工程进度表.xls) Excel.Application xlApp=new Excel.Application(); object missing=System.Reflection.Missing.Value; 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=Title_label .Text.Trim (); long totalCount=ds1.Tables[0].Rows.Count; long rowRead=0; float percent=0; worksheet.Cells[1,1]=Title_label .Text.Trim (); //写入字段 for(int i=0;i<ds1.Tables[0].Columns.Count;i++) { worksheet.Cells[2,i+1]=ds1.Tables[0].Columns.ColumnName; range=(Excel.Range)worksheet.Cells[2,i+1]; range.Interior.ColorIndex = 15; range.Font.Bold = true; } //写入数值 Caption .Visible = true; for(int r=0;r<ds1.Tables[0].Rows.Count;r++) { for(int i=0;i<ds1.Tables[0].Columns.Count;i++) { worksheet.Cells[r+3,i+1]=ds1.Tables[0].Rows[r]; } rowRead++; percent=((float)(100*rowRead))/totalCount; this.Caption.Text= "正在导出数据["+ percent.ToString("0.00") +"%]"; Application.DoEvents(); } worksheet.SaveAs(saveFileName,missing,missing,missing,missing,missing,missing,missing,missing); this.Caption.Visible= false; this.Caption.Text= oldCaption; range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds1.Tables[0].Rows.Count+2,ds1.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(ds1.Tables[0].Columns.Count>1) { range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex=Excel.XlColorIndex.xlColorIndexAutomatic; } workbook.Close(missing,missing,missing); xlApp.Quit(); } 注意要开通Excel组件服务,引用Excel的COM对象。 我的是C/S结构的 /// <summary> /// 将DataGrid中的数据导入Excel中,并显示Excel应用程序, /// 注意调用该方法必须有安装Excel 2000应用程序,并且假定DataGrid中绑定的是一DataSet /// </summary> /// <param name="grid"></param> /// <param name="ReportTitle"></param> public static void ExportDataGridToExcel(DataGrid grid,string ReportTitle) { DataTable myTable = ((DataSet)grid.DataSource).Tables[0]; try { Excel.Application xlApp = new Excel.ApplicationClass(); int rowIndex; int colIndex; rowIndex = 2; colIndex = 0; Excel.Workbook xlBook =xlApp.Workbooks.Add(true); if (grid.TableStyles.Count >0 ) { Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,grid.TableStyles[0].GridColumnStyles.Count]); range.MergeCells = true; xlApp.ActiveCell.FormulaR1C1 = ReportTitle; xlApp.ActiveCell.Font.Size = 18; xlApp.ActiveCell.Font.Bold = true; foreach(DataGridColumnStyle colu in grid.TableStyles[0].GridColumnStyles) { colIndex=colIndex +1; xlApp.Cells[2,colIndex] = colu.HeaderText ; } //得到的表所有行,赋值给单元格 for (int row = 0;row < myTable.Rows.Count;row++) { rowIndex = rowIndex + 1; colIndex = 0; for (int col=0;col<grid.TableStyles[0].GridColumnStyles.Count;col++) { colIndex = colIndex + 1; xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString(); } } } else { Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,myTable.Columns.Count]); range.MergeCells = true; xlApp.ActiveCell.FormulaR1C1 = ReportTitle; xlApp.ActiveCell.Font.Size = 18; xlApp.ActiveCell.Font.Bold = true; //将表中的栏位名称填到Excel的第一行 foreach(DataColumn Col in myTable.Columns) { colIndex = colIndex + 1; xlApp.Cells[2, colIndex] = Col.ColumnName; } //得到的表所有行,赋值给单元格 for (int row = 0;row < myTable.Rows.Count;row++) { rowIndex = rowIndex + 1; colIndex = 0; for (int col=0;col<myTable.Columns.Count;col++) { colIndex = colIndex + 1; xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString(); } } } xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colIndex]).Font.Bold = true; xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[rowIndex, colIndex]).Borders.LineStyle = 1; xlApp.Cells.EntireColumn.AutoFit(); xlApp.Cells.VerticalAlignment = Excel.Constants.xlCenter ; xlApp.Cells.HorizontalAlignment = Excel.Constants.xlCenter ; xlApp.Visible = true; } catch(Exception e) { throw e; } } silentwins,给你代码中SaveFileDialog saveDialog=new SaveFileDialog();这一步无法执行,是不是缺什么引用呢, (MVP)非常罕见的问题!IE8浏览虚拟目录下的网站! 修改xml文件疑问 只要你是拼SQL的,无论的玩什么花样,都会被注入.. 问下错误页面的制作~~ gridview控件不允许修改的字段更新后字段值变空? web窗体中有播放声音文件的控件吗(要有类似realpaly)的界面? "Infragistics.NetAdvantage.2006"中文方面的资料 通过DataSet读取xml文件的问题 页面转向问题 如何模拟网站的真实负载能力? 从数据库里取出数据,显示相应控件里 __VIEWSTATE 绕验证
{
gridbind();
if(ds1==null) return; string saveFileName="";
// bool fileSaved=false;
SaveFileDialog saveDialog=new SaveFileDialog();
saveDialog.DefaultExt ="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName ="Sheet1";
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")<0) return; //被点了取消
// excelapp.Workbooks.Open (App.path & 工程进度表.xls)
Excel.Application xlApp=new Excel.Application();
object missing=System.Reflection.Missing.Value;
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=Title_label .Text.Trim ();
long totalCount=ds1.Tables[0].Rows.Count;
long rowRead=0;
float percent=0; worksheet.Cells[1,1]=Title_label .Text.Trim ();
//写入字段
for(int i=0;i<ds1.Tables[0].Columns.Count;i++)
{
worksheet.Cells[2,i+1]=ds1.Tables[0].Columns.ColumnName;
range=(Excel.Range)worksheet.Cells[2,i+1];
range.Interior.ColorIndex = 15;
range.Font.Bold = true; }
//写入数值
Caption .Visible = true;
for(int r=0;r<ds1.Tables[0].Rows.Count;r++)
{
for(int i=0;i<ds1.Tables[0].Columns.Count;i++)
{
worksheet.Cells[r+3,i+1]=ds1.Tables[0].Rows[r];
}
rowRead++;
percent=((float)(100*rowRead))/totalCount;
this.Caption.Text= "正在导出数据["+ percent.ToString("0.00") +"%]";
Application.DoEvents();
}
worksheet.SaveAs(saveFileName,missing,missing,missing,missing,missing,missing,missing,missing);
this.Caption.Visible= false;
this.Caption.Text= oldCaption; range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds1.Tables[0].Rows.Count+2,ds1.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(ds1.Tables[0].Columns.Count>1)
{
range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex=Excel.XlColorIndex.xlColorIndexAutomatic;
}
workbook.Close(missing,missing,missing);
xlApp.Quit();
}
/// 将DataGrid中的数据导入Excel中,并显示Excel应用程序,
/// 注意调用该方法必须有安装Excel 2000应用程序,并且假定DataGrid中绑定的是一DataSet
/// </summary>
/// <param name="grid"></param>
/// <param name="ReportTitle"></param>
public static void ExportDataGridToExcel(DataGrid grid,string ReportTitle)
{
DataTable myTable = ((DataSet)grid.DataSource).Tables[0]; try
{
Excel.Application xlApp = new Excel.ApplicationClass(); int rowIndex;
int colIndex; rowIndex = 2;
colIndex = 0; Excel.Workbook xlBook =xlApp.Workbooks.Add(true); if (grid.TableStyles.Count >0 )
{
Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,grid.TableStyles[0].GridColumnStyles.Count]);
range.MergeCells = true;
xlApp.ActiveCell.FormulaR1C1 = ReportTitle;
xlApp.ActiveCell.Font.Size = 18;
xlApp.ActiveCell.Font.Bold = true; foreach(DataGridColumnStyle colu in grid.TableStyles[0].GridColumnStyles)
{
colIndex=colIndex +1;
xlApp.Cells[2,colIndex] = colu.HeaderText ;
} //得到的表所有行,赋值给单元格
for (int row = 0;row < myTable.Rows.Count;row++)
{
rowIndex = rowIndex + 1;
colIndex = 0;
for (int col=0;col<grid.TableStyles[0].GridColumnStyles.Count;col++)
{
colIndex = colIndex + 1;
xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString();
}
}
}
else
{
Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,myTable.Columns.Count]);
range.MergeCells = true;
xlApp.ActiveCell.FormulaR1C1 = ReportTitle;
xlApp.ActiveCell.Font.Size = 18;
xlApp.ActiveCell.Font.Bold = true;
//将表中的栏位名称填到Excel的第一行
foreach(DataColumn Col in myTable.Columns)
{
colIndex = colIndex + 1;
xlApp.Cells[2, colIndex] = Col.ColumnName;
} //得到的表所有行,赋值给单元格
for (int row = 0;row < myTable.Rows.Count;row++)
{
rowIndex = rowIndex + 1;
colIndex = 0;
for (int col=0;col<myTable.Columns.Count;col++)
{
colIndex = colIndex + 1;
xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString();
}
}
}
xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colIndex]).Font.Bold = true;
xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[rowIndex, colIndex]).Borders.LineStyle = 1; xlApp.Cells.EntireColumn.AutoFit();
xlApp.Cells.VerticalAlignment = Excel.Constants.xlCenter ;
xlApp.Cells.HorizontalAlignment = Excel.Constants.xlCenter ; xlApp.Visible = true;
}
catch(Exception e)
{
throw e;
}
}