asp.net读取数据库,并将数据写入excel

竹林听雨2005 2011-08-11 08:56:27
求个思路,最好有代码:
现想从数据库里读取数据,然后写入到excel里,但写入的位置不固定,
比如第一条数据写入B2列,第二条数据有可能就写到B5列了,第三条数据有可能就写到C5列。

有什么方法比较好?
...全文
244 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹林听雨2005 2011-09-13
  • 打赏
  • 举报
回复
还是自己解决了,以上的方法均未采用,不过感谢朋友们的友情帮助。
kidong 2011-08-12
  • 打赏
  • 举报
回复
神马意思不懂
a281274533 2011-08-12
  • 打赏
  • 举报
回复
去看看孟子的 导出EXECL 话说我就是根据孟子的导出EXECL 改出来的,也是导出不规则的EXECL,自定义EXECL的表头和表尾。
wangshijie2019 2011-08-12
  • 打赏
  • 举报
回复
你能在页面吧http://www.boyd.cn/uploadfiles/qqpic.jpg 这张图的样式做出来 难道还 写不到excel 表里面吗 开国际玩笑把
竹林听雨2005 2011-08-12
  • 打赏
  • 举报
回复
感谢孟子的回帖!

excel的格式如图,xxxx的地方都是需要通过查询数据库进行自动填充的。


因为数据也不固定,所以数据库里的表字段定义成下面这样了:

名称 得分 扣分原因
----------------------------
名称 xxxx
地址 xxxx
电话 xxxx
项目1 xxxx
项目2 xxxx
项目3 xxxx
项目4 xxxx


可能表结构本身也不是最优状态。

请教如何读取数据库填充上述的不规则表格。
孟子E章 2011-08-12
  • 打赏
  • 举报
回复
不固定,有什么规则,怎么知道第N条记录插入到哪里?没有规则,程序是办不到的
竹林听雨2005 2011-08-12
  • 打赏
  • 举报
回复
哥们,请别抄代码了可好?这些百度一下都有的。。。导出EXCEL本身简单,但这里是要往不固定的单元格里写数据,,,,请看清题目呢。
孟子E章 2011-08-12
  • 打赏
  • 举报
回复
你可以看看这2个文章,
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
http://dotnet.aspx.cc/file/Update-Excel-Cell-With-ADO.NET.aspx

如果你的模板格式是固定,你可以采取更新的方法进行更新指定位置的内容。
http://dotnet.aspx.cc/file/Update-Excel-Cell-With-ADO.NET.aspx



如果没有模板限制,就导出你图示的样式,采取新建的方法是可以的,记住合并下列就可以了。不是很麻烦的
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
子夜__ 2011-08-11
  • 打赏
  • 举报
回复
读数据到DataTable
public static DataTable ReturnDataTable(string cmdtext)
{
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "数据库连接字符串";
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd = new SqlCommand(cmdtext, cn);
cmd.CommandType = CommandType.Text; ;
SqlDataReader dr = null;
using (dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(dr);
}
return dt;
}

DataTable导入EXCEL

 public static bool ExportToExcel(DataTable table, string excelName, int[] columnIndexs, string[] columnHeads)
{

Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
Excel.Workbook obook = null;
Excel.Worksheet oSheet = null;
Excel.Range range = null;
try
{
obook = oExcel.Workbooks.Add("");
oSheet = (Excel.Worksheet)obook.Worksheets[1];
int rCount, cCount;
rCount = table.Rows.Count;
cCount = table.Columns.Count;
object obj = System.Reflection.Missing.Value;

if (cCount < columnIndexs.Length || cCount < columnHeads.Length)
{
throw new ArgumentOutOfRangeException("columnIndexs 与 columnHeads 长度必须一致。");
}
for (int i = 1; i <= columnIndexs.Length; i++)
{
//Excel.Range = (Excel.Range)oSheet.Columns.get_Item(i, obj);
range = (Excel.Range)oSheet.Columns.get_Item(i, obj);
range.NumberFormatLocal = "@";
}
for (int c = 0; c < columnIndexs.Length; c++)
{
oSheet.Cells[1, c + 1] = columnHeads[c];
for (int r = 1; r <= rCount; r++)
{
oSheet.Cells[r + 1, c + 1] = table.Rows[r - 1][columnIndexs[c]].ToString();
}
}
obook.SaveCopyAs(excelName);
obook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
return true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(obook);
oExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
GC.Collect();
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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