C#如何将存储过程返回的多个table导出到一个excel的不同sheet里面? RT,DataSet可以获得多个table,例如ds.Tabels[0] Tables[1]..等等,现在希望能按序号导出到一个excel文件的不同sheet里面,不知道如何操作?样式可以不用考虑,希望能用比较简单的方法实现。希望能给出关键实现代码,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Excel.Application appExcel; appExcel = new Excel.Application(); Excel.Workbook workbookData; Excel.Worksheet worksheetData; workbookData = appExcel.Workbooks.Add(Missing.Value); for (int k = 0; k < ds.Tables.Count; k++) { worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); if (ds.Tables[k] != null) { for (int i = 0; i < ds.Tables[k].Rows.Count; i++) { for (int j = 0; j < ds.Tables[k].Columns.Count; j++) { worksheetData.Cells[i + 1, j + 1] = ds.Tables[k].Rows[i][j].ToString(); } } } worksheetData.Columns.EntireColumn.AutoFit(); workbookData.Saved = true; } string strFileName = " 1.xls"; workbookData.SaveCopyAs(strFileName); // 关掉内存中的进程 appExcel.Quit(); 请问楼上,workbookData = appExcel.Workbooks.Add(Missing.Value); 这个Missing.Value是什么意思?好像不能自动提示出来?我的环境是vs.net 2003 请问运行的时候提示 appExcel = new Excel.Application(); 错误页面提示 拒绝访问 需要添加参照 在com组件中将Microsoft Excel 9.0 Object Library添加到工程中才可以使用 new Excel.Application(); 不提倡直接遍历cell worksheetData.Cells[i + 1, j + 1] = ds.Tables[k].Rows[i][j].ToString(); 这样速度很慢Excel.Range myRange = myWorkSheet.get_Range("A1", "H1");int rowsCount = dt.Rows.Count;int columnsCount = dt.Columns.Count;myRange = myRange.get_Resize(rowsCount, columnsCount);object[,] objData = new Object[rowsCount, columnsCount];int rowIndex = 0;int colIndex = 0;foreach (DataRow dr in dt.Rows){ colIndex = 0; foreach (DataColumn dc in dt.Columns) { objData[rowIndex, colIndex] = "'" + dr[dc.ColumnName].ToString(); colIndex++; } rowIndex++;}myRange.Value2 = objData; http://www.baidu.com/s?ie=gb2312&bs=Missing.value&sr=&z=&cl=3&f=8&wd=Excel.Application+%BE%DC%BE%F8%B7%C3%CE%CA&ct=0 我浏览的时候找不到Microsoft Excel 9.0 Object Library,只有 Microsoft Office 9.0 Object Library我安装了可是还是不行,不能自动带出Excel.Application(); 我的OFFICE是2003 Office2003是 Microsoft Excel 11.0 Object Library是在添加引用的Com下如果没有,考虑重装安装一遍Office吧。 我引用了11.0这个组件,可是在vs2003下,不自动提示 Excel.Application(); ,我直接写上去运行的话又报拒绝访问的问题。 using Excel=Microsoft.Office.Interop.Excel; 感谢 lsj_zrp 参考你的代码,基本能实现我的需求,但还有两个问题想请教一下:1,生成的excel文件包含三个默认的空白sheet,即sheet1,2,3,如何删除指定的sheet?2,保存的文件路径可否弹出另存为对话框选择? 非常感谢,不知道有没有完整的demo看一下,这个代码段我并不是很理解 如何对“实体集”中的元素排序??? ZEDgraph的下方横向拖动条的问题 C# 串口异常操作导致“com拒绝访问” 送分题 用Timer控件刷新listview,怎样可以不闪? 关于绑定了数据的DATAGRIDVIEW中删除多行数据的问题 家用电脑白天用作服务器(家中没人),晚上关机,安全吗? 请教为什么说c#中decimal 不是基本类型?? CheckBoxList没有传值还是其他问题? 在C#中怎样能制作也像MS中一样的帮助系统. 才学C#遇见的问题! 菜鸟提问
Excel.Workbook workbookData;
Excel.Worksheet worksheetData;
workbookData = appExcel.Workbooks.Add(Missing.Value); for (int k = 0; k < ds.Tables.Count; k++)
{ worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); if (ds.Tables[k] != null)
{
for (int i = 0; i < ds.Tables[k].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[k].Columns.Count; j++)
{
worksheetData.Cells[i + 1, j + 1] = ds.Tables[k].Rows[i][j].ToString();
}
}
} worksheetData.Columns.EntireColumn.AutoFit();
workbookData.Saved = true;
} string strFileName = " 1.xls";
workbookData.SaveCopyAs(strFileName); // 关掉内存中的进程
appExcel.Quit();
这个Missing.Value是什么意思?好像不能自动提示出来?我的环境是vs.net 2003
错误页面提示 拒绝访问
这样速度很慢Excel.Range myRange = myWorkSheet.get_Range("A1", "H1");
int rowsCount = dt.Rows.Count;
int columnsCount = dt.Columns.Count;
myRange = myRange.get_Resize(rowsCount, columnsCount);
object[,] objData = new Object[rowsCount, columnsCount];
int rowIndex = 0;
int colIndex = 0;
foreach (DataRow dr in dt.Rows)
{
colIndex = 0;
foreach (DataColumn dc in dt.Columns)
{
objData[rowIndex, colIndex] = "'" + dr[dc.ColumnName].ToString();
colIndex++;
}
rowIndex++;
}
myRange.Value2 = objData;
我浏览的时候找不到Microsoft Excel 9.0 Object Library,只有 Microsoft Office 9.0 Object Library
我安装了可是还是不行,不能自动带出Excel.Application();
我的OFFICE是2003
是在添加引用的Com下如果没有,考虑重装安装一遍Office吧。
,我直接写上去运行的话又报拒绝访问的问题。