用C#创建一个excel2010工作薄,想把sqlserver数据库中的一个表内容放到sheet1中,应该怎样实现?

一转程序员 2014-11-13 07:19:45
已经把数据库中的表读到datatable中了,想知道怎样把datatable中的数据写到当前工作表中?
如图:

每次启动自动更新excel中的数据,上面那个按钮的作用是要把数据库表中的最新数据更新到excel中

还有一个问题,想编辑beforedoubleclick事件,来取得要编辑的单元格,怎样取得这单元格的行列号?
...全文
166 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱在今世 2014-11-14
  • 打赏
  • 举报
回复
/// <summary>
        /// 关闭excel
        /// </summary>
        /// <param name="processName">excel进程名</param>
        protected static void KillProcess(string processName)
        {
            System.Diagnostics.Process myproc = new System.Diagnostics.Process();
            //得到所有打开的进程   
            try
            {
                foreach (Process thisproc in Process.GetProcessesByName(processName))
                {
                    if (!thisproc.CloseMainWindow())
                    {
                        thisproc.Kill();
                    }
                }
            }
            catch (Exception Exc)
            {
                //throw new Exception("", Exc);
            }
        }
  • 打赏
  • 举报
回复
关于第二个问题,你想良好、稳定地监控 Excel 操作,并且插入自己的 c# 程序控制,除了学习 vsto 开发知识以外,最好还要比较深入地学习10几年前的vba for exce的开发。最好到 excel-home 论坛去注册一个号码,去下载几十个由 excel 工作簿直接扩展开发的企业管理系统,看看其二次开发 vba 代码控制用户交互使用 Excel 的思路。 一般来说,最起码地是要使用 c# 程序捕获到: 1. 单元格修改(录入)事件,用来用 c# 程序扩展数据处理功能。 2. 工作簿保存事件,用来把数据保存到你自己的远程服务器上。或者(甚至)禁止用户将Excel保存到本地。
爱在今世 2014-11-14
  • 打赏
  • 举报
回复
/// <summary>
        /// 输出到excel
        /// </summary>
        /// <param name="dt">内容所在的DataTable</param>
        /// <param name="savepath">保存的地址</param>
        /// <param name="nu">无意义</param>
        public static void WriteExcel(System.Data.DataTable dt, string savepath, int nu)
        {
            ApplicationClass appexcel = new ApplicationClass();
            Microsoft.Office.Interop.Excel.Application objexcel = new Microsoft.Office.Interop.Excel.Application();
            objexcel.Visible = false;
            object missing = System.Reflection.Missing.Value;
            Workbook wb = objexcel.Workbooks.Add(missing);
            Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);
            //Range objRange;
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                ws.Cells[1, i + 1] = dt.Columns[i].ColumnName;
            }
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ws.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();
                }
            }
            wb.Saved = true;
            wb.SaveCopyAs(savepath);
            wb.Close();
            objexcel.Quit();
            appexcel.Quit();
            KillProcess("Excel");
        }
需要引用Microsoft.Office.Interop.Excel
  • 打赏
  • 举报
回复
上面第一个链接(关于写入 Excel 工作表数据)我贴错了,换成这个 http://bbs.csdn.net/topics/390691267
Momolt 2014-11-14
  • 打赏
  • 举报
回复
C#DataTable导出Excel,楼主可以看看,http://bbs.netluntan.com/showtopic-470.aspx
by_封爱 版主 2014-11-14
  • 打赏
  • 举报
回复
卧_槽 2014-11-14
  • 打赏
  • 举报
回复
oledb直接用sql语句操作excel就可以了。
Kulou_ 2014-11-14
  • 打赏
  • 举报
回复
不就是搬运数据
一转程序员 2014-11-13
  • 打赏
  • 举报
回复
直接用“列”和“行”中文字?

110,533

社区成员

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

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

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