web excel .net 两种导入数据到excel的方法

一 要引用Microsoft.Office.Interop.Excel.dll  如果发布到服务器后 服务器要安装 office 软件,并配置Excel的DCOM权限.      

 如何配置可以参考这个博客   http://www.cnblogs.com/kdkler/p/3261814.html

索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误:80070005

具体解决方法如下:

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框

5:点击"标识"标签,选择"交互式用户"

6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORKSERVICE"用户,然后赋予"本地访问"权限.

这样,我们便配置好了相应的Excel的DCOM权限.

注意:这是在WIN2003上配置的,在2000,xp上,NETWORKSERVICE用户改为ASP.net用户。

 

 /// <summary>
        /// 保存数据到Excel文件
        /// </summary>
        /// <param name="filename"></param>
        private void SaveVideoMsgToExcel(string filepath)
        {
            //debugLogwrite.WriteLog("1");
            // 1. 创建Excel应用程序对象的一个实例,相当于我们从开始菜单打开Excel应用程序。  
            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
            System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlsApp.Workbooks;
            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
            Microsoft.Office.Interop.Excel.Range range = null;
            try
            {
                //分组名称 能从页面获取到的  
                //string filepath = Server.MapPath("") + @"../../VideoPlayHistory/" + filename;
                //名称规则“分组名称+当前日期”
                //首先去获取文件名名称
                //如果存在,就打开文件,先向里边写入数据
                //如果不存在,创建一个问题件,向里边写入数据
                //写入完成后保存文件,释放相关资源
                //弹出文件导出对话框,让用户把文件保存到本地

                if (xlsApp == null)
                {
                    //debugLogwrite.WriteLog("3");
                    //对此实例进行验证,如果为null则表示运行此代码的机器可能未安装Excel
                    return;
                }
                else
                {
                    worksheet.Cells[1, 1] = "时段/星期";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 14;
                    worksheet.Cells[1, 2] = "星期一";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 2];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 3] = "星期二";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 3];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 4] = "星期三";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 4];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 5] = "星期四";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 5];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 6] = "星期五";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 6];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 7] = "星期六";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 7];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;
                    worksheet.Cells[1, 8] = "星期日";
                    range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 8];
                    range.Interior.ColorIndex = 15;
                    range.Font.Bold = true;
                    range.ColumnWidth = 18;

                    //for (int i = 0; i < 8; i++)
                    //{
                    //    worksheet.Cells[2, i + 1] = "fdssdfhdsgd;\nsdgdsgdsgdg;\ndsgfsdgds;";
                    //}
                    int r = 2;
                    foreach (TimespanOneWeek item in vdoOneWeek)
                    {
                        worksheet.Cells[r, 1] = item.starttime + "-" + item.endtime;
                        worksheet.Cells[r, 2] = GetVideoNames(item.vdomonday);
                        worksheet.Cells[r, 3] = GetVideoNames(item.vdotuesday);
                        worksheet.Cells[r, 4] = GetVideoNames(item.vdowednesday);
                        worksheet.Cells[r, 5] = GetVideoNames(item.vdothursday);
                        worksheet.Cells[r, 6] = GetVideoNames(item.vdofriday);
                        worksheet.Cells[r, 7] = GetVideoNames(item.vdosaturday);
                        worksheet.Cells[r, 8] = GetVideoNames(item.vdosunday);
                        r = r + 1;
                    }

                    xlsApp.Visible = false;

                    workbook.Saved = true;
                    workbook.SaveCopyAs(filepath);

                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {

                System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
                workbook.Close(true, Type.Missing, Type.Missing);
                workbook = null;
                xlsApp.Quit();
                xlsApp = null;
                GC.Collect();
                //debugLogwrite.WriteLog("4");
            }

        }

 

 

二  

 public void CreateTerminalExcel(List<TerminalMonitorInfo> dt, string fileName)
        {
            FileStream fs = new FileStream(Server.MapPath("~/terminal.xls"), FileMode.Create, FileAccess.Write);
            //if (File.Exists(fileName))
            //{
            //    File.Delete(fileName);
            //}
            StreamWriter rw = new StreamWriter(fs, Encoding.Default);//建立StreamWriter为写作准备;
            try{
              
                string head = "";
                head += "终端名称" + "\t";
                head += "MAC地址" + "\t";
                head += "分组" + "\t";
                head += "城市" + "\t";
                head += "位置" + "\t";
                head += "输出模式" + "\t";
                head += "状态" + "\t";
                head += "最后上线时间" + "\t";
                head += "最后心跳时间" + "\t";
                rw.WriteLine(head);

                int count = dt.Count;
               
                string values = "";

                for (int intRowCount = 0; intRowCount < dt.Count; intRowCount++)
                {

                    values += dt[intRowCount].Name + "\t";
                    values += dt[intRowCount].Mac.MacAddressString + "\t";
                    values += dt[intRowCount].GroupName + "\t";
                    values += dt[intRowCount].City + "\t";
                    values += dt[intRowCount].Location + "\t";
                    values += EnumDisplayNameAttribute.GetDisplayName(dt[intRowCount].OutputType) + "\t";

                    values += getOnline((int)(dt[intRowCount].IsOnline ? dt[intRowCount].Status : TerminalStatusStatus.Offline)) + "\t";
                    values += dt[intRowCount].LastAuthDate == null ? "" : dt[intRowCount].LastAuthDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "\t";
                    values += dt[intRowCount].LastHeartbeatTime == null ? "" : dt[intRowCount].LastHeartbeatTime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "\t";
                    rw.WriteLine(values);
                    values = "";
                }
            }catch{

            }
            finally{

                rw.Close();
                fs.Close();
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值