zoukankan      html  css  js  c++  java
  • C#没有装office进行Excel的导出

    导出Excel的格式

    //标题的定义
                ExcelHead[] excel ={
                 new ExcelHead() { Title = "时间", Field = "Time", TypeCell = TypeEnum.String },
                 new ExcelHead() { Title = "编号", Field = "Number", TypeCell = TypeEnum.String },
                 new ExcelHead() { Title = "计划", Field = "Plan", TypeCell = TypeEnum.String },
                new ExcelHead() { Title = "完成情况", Field = "Completion", TypeCell = TypeEnum.String },
                new ExcelHead() { Title = "是否完成", Field = "IsComplete", TypeCell = TypeEnum.String },
                new ExcelHead() { Title = "星期", Field = "Week", TypeCell = TypeEnum.String }
             };
                ExcelSheet sheet = new ExcelSheet("工作日志", excel);
                ExcelSet set = new ExcelSet();//创建excel
                set.add(sheet);//工作簿名称,必填
                set.Name = "dsa";//excel名称,必填
                foreach (WorkLogMode item in listWorkMode)
                {
                    ExcelRow row = new ExcelRow();
                    ExcelCell cellTime = new ExcelCell("Time", item.Time);
                    ExcelCell cellNumber = new ExcelCell("Number", item.Number);
                    ExcelCell cellPlan = new ExcelCell("Plan", item.Plan);
                    ExcelCell cellCompletion = new ExcelCell("Completion", item.Completion);
                    ExcelCell cellIsComplete = new ExcelCell("IsComplete", item.IsComplete);
                    int iWeek = (int)Convert.ToDateTime(item.Time).DayOfWeek;
                    //星期几
                    string week = DateHandle.Week(iWeek);
                    ExcelCell cellWeek = new ExcelCell("Week", week);
                    row.add(cellTime);
                    row.add(cellNumber);
                    row.add(cellPlan);
                    row.add(cellCompletion);
                    row.add(cellIsComplete);
                    row.add(cellWeek);
                    sheet.add(row);
                }
                set.Save(path);
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    /// <summary>
    ///Excel的单元格
    /// </summary>
    public class ExcelCell : IExcelCell
    {
        public string Key { set; get; }
        public string Value { set; get; }
        public ExcelCell(string key,string value)
        {
            Key = key;
            Value = value; 
        }
        public ExcelCell(string key, string value, string styleID)
        {
            Key = key;
            Value = value;
            StyleID = styleID;
        }
        public ExcelCell(string key, string value, TypeEnum typeCell, string styleID)
        {
            Key = key;
            Value = value;
            TypeCell = typeCell;
            StyleID = styleID;
        }
        public ExcelCell(string key, string value, TypeEnum typeCell)
        {
            Key = key;
            Value = value;
            TypeCell = typeCell;
        }
        public ExcelCell(string key, string value, TypeEnum typeCell, Dictionary<string, string> displayContent)
        {
            Key = key;
            Value = value;
            TypeCell = typeCell;
            DisplayContent = displayContent;
        }
        public StringBuilder getCell()
        {
            StringBuilder builderCell=new StringBuilder();
            if (StyleID==null)//查看有无样式
            {
                builderCell.Append("<Cell>");
            }
            else
            {
                builderCell.Append("<Cell ss:StyleID=\"" + StyleID + "\">");
            }
            if (TypeCell.ToString()=="")
            {
                TypeCell = TypeEnum.String;
            }
            string value = Value;
            if (DisplayContent!=null)
            {
                foreach (KeyValuePair<string, string> key1 in DisplayContent)
                {
                    if (key1.Key.ToUpper()==Value.ToUpper())
                    {
                        value=key1.Value;
                    }
                }
            }
            builderCell.Append(string.Format("<Data ss:Type=\"{0}\">{1}</Data>", TypeCell, value));
          
            
            builderCell.Append("</Cell>");
            return builderCell;
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Collections;
    
    /// <summary>
    ///ExcelData 的摘要说明
    /// </summary>
    public class ExcelHead:IExcelCell
    {
        /// <summary>
        /// 标题
        /// </summary>
        public string Title { set; get; }
        /// <summary>
        /// 字段
        /// </summary>
        public string Field { set; get; } 
    
        public ExcelHead(string title, string field, TypeEnum type)
        {
            
            Title = title;
            field = Field;
            TypeCell = type;
        }
        public ExcelHead(string title, string field, TypeEnum type, Dictionary<string, string> displayContent)
        {
            Title = title;
            field = Field;
            TypeCell = type;
            DisplayContent = displayContent;
        }
        public ExcelHead(string title, string field)
        {
            Title = title;
            field = Field;
            TypeCell = TypeEnum.String;
        }
        public ExcelHead(string title, string field, Dictionary<string, string> displayContent)
        {
            Title = title;
            field = Field;
            TypeCell = TypeEnum.String;
            DisplayContent = displayContent;
        }
        public ExcelHead() { }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    
    /// <summary>
    ///ExcelRow 的摘要说明
    /// </summary>
    public class ExcelRow
    {
        private List<ExcelCell> listCell;
        public ExcelRow()
        {
            listCell = new List<ExcelCell>();
        }
        public void add(ExcelCell cell)
        {
            listCell.Add(cell); 
        }
        public int count()
        {
            return listCell.Count;
        }
        public StringBuilder getRow(ExcelHead[] head)
        {
            StringBuilder builderRow = new StringBuilder();
            builderRow.Append(" <Row ss:AutoFitHeight=\"0\">");
            for (int i = 0; i < head.Length; i++)
            {
                for (int j = 0; j < listCell.Count; j++)
                {
                    if (head[i].Field == listCell[j].Key)
                    {
                        ExcelCell cell = listCell[j];
                        cell.DisplayContent = head[i].DisplayContent;
                        builderRow.Append(cell.getCell());
                    }
                }
            }
            builderRow.Append("</Row>");
            return builderRow;
        }
        public ExcelCell[] cells
        {
            get
            {
                ExcelCell[] cell = new ExcelCell[listCell.Count];
                for (int i = 0; i < listCell.Count; i++)
                {
                    cell[i] = listCell[i];
                }
                return cell;
            }
        }
        public ExcelCell this[string StrCell]
        {
            get
            {
                ExcelCell cell = listCell.Find(c => c.Key == StrCell);
                return cell;
            }
        }
        public ExcelCell this[int intCell]
        {
            get
            {
                ExcelCell cell = listCell[intCell];
                return cell;
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    using System.Runtime.Serialization;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Diagnostics;
    
    /// <summary>
    ///ExcelSet 的摘要说明
    /// </summary>
    public class ExcelSet
    {
        public string Name { set; get; }
        private StringBuilder OutFileContent = new StringBuilder();
        private List<ExcelSheet> listSheet;
        public ExcelSet()
        {
            listSheet = new List<ExcelSheet>();
        }
        public void add(ExcelSheet sheet)
        {
            listSheet.Add(sheet);
        }
        public void Save(string path)
        {
            OutFileContent = AddHeadFile(OutFileContent);
            for (int i = 0; i < listSheet.Count; i++)
            {
                OutFileContent.Append(listSheet[i].getExcelSheet());
            }
            OutFileContent = AddEndFile(OutFileContent);
            IFormatter formatter = new BinaryFormatter();
            //创建一个文件流
            FileStream stream = new FileStream(path,
                FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
            StreamWriter mySw = new StreamWriter(stream);
            string a= stream.Name;
            
            mySw.Write(OutFileContent);
            
            mySw.Close(); 
            //formatter.Serialize(stream, OutFileContent);
            stream.Dispose();
            stream.Close();
        }
        //public void show()
        //{
        //    OutFileContent = AddHeadFile(OutFileContent);
        //    for (int i = 0; i < listSheet.Count; i++)
        //    {
        //        OutFileContent.Append(listSheet[i].getExcelSheet());
        //    }
        //    OutFileContent = AddEndFile(OutFileContent);
        //    HttpContext.Current.Response.Clear();
        //    HttpContext.Current.Response.Buffer = true;
        //    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        //    string httpType = HttpContext.Current.Request.Browser.Browser;
        //    if (httpType == "IE")
        //    {
        //        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" +
        //        System.Web.HttpUtility.UrlEncode(Name, System.Text.Encoding.UTF8) + ".xls");
        //    }
        //    else if (httpType == "Firefox")
        //    {
        //        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Name + ".xls");
        //    }
        //    HttpContext.Current.Response.Charset = "GB2312";
        //    HttpContext.Current.Response.Write(OutFileContent.ToString());
        //    HttpContext.Current.Response.End();
        //}
        /// <summary>
        ///excel表头
        /// </summary>
        /// <param name="OutFileContent"></param>
        /// <returns></returns>
        private static StringBuilder AddHeadFile(StringBuilder OutFileContent)
        {
            OutFileContent.Append("<?xml version=\"1.0\"?>\r\n");
            OutFileContent.Append("<?mso-application progid=\"Excel.Sheet\"?>\r\n");
            OutFileContent.Append("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"\r\n");
            OutFileContent.Append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n");
            OutFileContent.Append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\n");
            OutFileContent.Append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"\r\n");
            OutFileContent.Append(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">\r\n");
            OutFileContent.Append(" <DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\">\r\n");
            OutFileContent.Append("  <Author>panss</Author>\r\n");
            OutFileContent.Append("  <LastAuthor>Оґ¶ЁТе</LastAuthor>\r\n");
            OutFileContent.Append("  <Created>2004-12-31T03:40:31Z</Created>\r\n");
            OutFileContent.Append("  <Company>Prcedu</Company>\r\n");
            OutFileContent.Append("  <Version>12.00</Version>\r\n");
            OutFileContent.Append(" </DocumentProperties>\r\n");
            OutFileContent.Append(" <OfficeDocumentSettings xmlns=\"urn:schemas-microsoft-com:office:office\">\r\n");
            OutFileContent.Append("  <DownloadComponents/>\r\n");
            //OutFileContent.Append("  <LocationOfComponents HRef=\"file:///F:\\Tools\\OfficeXP\\OfficeXP\\\"/>\r\n");
            OutFileContent.Append(" </OfficeDocumentSettings>\r\n");
            OutFileContent.Append(" <ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\">\r\n");
            OutFileContent.Append("  <WindowHeight>9000</WindowHeight>\r\n");
            OutFileContent.Append("  <WindowWidth>10620</WindowWidth>\r\n");
            OutFileContent.Append("  <WindowTopX>480</WindowTopX>\r\n");
            OutFileContent.Append("  <WindowTopY>45</WindowTopY>\r\n");
            OutFileContent.Append("  <ProtectStructure>False</ProtectStructure>\r\n");
            OutFileContent.Append("  <ProtectWindows>False</ProtectWindows>\r\n");
            OutFileContent.Append(" </ExcelWorkbook>\r\n");
            OutFileContent.Append(" <Styles>\r\n");
            OutFileContent.Append("  <Style ss:ID=\"Default\" ss:Name=\"Normal\">\r\n");
            OutFileContent.Append("   <Alignment ss:Vertical=\"Center\" />\r\n");
            OutFileContent.Append("   <Borders/>\r\n");
            OutFileContent.Append("   <Font ss:FontName=\"ЛОМе\" x:CharSet=\"134\" ss:Size=\"12\"/>\r\n");
            OutFileContent.Append("   <Interior/>\r\n");
            OutFileContent.Append("   <NumberFormat/>\r\n");
            OutFileContent.Append("   <Protection/>\r\n");
            OutFileContent.Append("  </Style>\r\n");
            OutFileContent.Append("  <Style ss:ID=\"s62\">\r\n");
            OutFileContent.Append("   <Alignment ss:Vertical=\"Center\" ss:Horizontal=\"Center\" ss:WrapText=\"1\"/>\r\n");
            OutFileContent.Append("   <Font ss:FontName=\"ЛОМе\" x:CharSet=\"134\" ss:Size=\"9\"/>\r\n");
            OutFileContent.Append("  </Style>\r\n");
            OutFileContent.Append("  <Style ss:ID=\"s74\">\r\n");
            OutFileContent.Append("   <Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\"/>\r\n");
            OutFileContent.Append("   <Borders>\r\n");
            OutFileContent.Append("  <Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>\r\n");
            OutFileContent.Append("  <Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>\r\n");
            OutFileContent.Append("  <Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>\r\n");
            OutFileContent.Append("  <Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Weight=\"1\"/>\r\n");
            OutFileContent.Append("  </Borders>\r\n");
            OutFileContent.Append("   <Font ss:FontName=\"ЛОМе\" x:CharSet=\"134\" ss:Size=\"12\" ss:Bold=\"1\"/>\r\n");
            OutFileContent.Append("   <Interior ss:Color=\"#BFBFBF\" ss:Pattern=\"Solid\"/>\r\n");
            OutFileContent.Append("  </Style>\r\n");
            OutFileContent.Append(" </Styles>\r\n");
            return OutFileContent;
        }
        /// <summary>
        /// excel表尾
        /// </summary>
        /// <param name="OutFileContent"></param>
        /// <returns></returns>
        private static StringBuilder AddEndFile(StringBuilder OutFileContent)
        {
            OutFileContent.Append("</Workbook>\r\n");
            return OutFileContent;
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    using System.Data;
    /// <summary>
    ///ExcelSeet 的摘要说明
    /// </summary>
    public class ExcelSheet
    {
        /// <summary>
        /// 标题
        /// </summary>
        public ExcelHead[] Head;
        public string Name { set; get; }
        /// <summary>
        ///是否添加表格样式
        /// </summary> 
        public bool IsTableStyle { set; get; }
        public ExcelSheet(string name, ExcelHead[] head)
        {
            Head = head;
            Name = name;
        }
        public ExcelSheet(string name, ExcelHead[] head, DataTable dt)
        {
            Head = head;
            Name = name;
            //写内容
            foreach (DataRow row in dt.Rows)
            {
                ExcelRow excelRow = new ExcelRow();
                for (int i = 0; i < Head.Length; i++)
                {
                    if (Head[i].TypeCell.Equals(""))
                    {
                        Head[i].TypeCell = TypeEnum.String;
                    }
                    ExcelCell cell = new ExcelCell(Head[i].Field, row[Head[i].Field].ToString(), Head[i].TypeCell);
                    excelRow.add(cell);
                }
                listRow.Add(excelRow);
            }
        }
        public ExcelSheet(DataTable dt) 
        {
            foreach (DataRow row in dt.Rows)
            {
                ExcelRow excelRow = new ExcelRow();
                for (int i = 0; i < Head.Length; i++)
                {
                    if (Head[i].TypeCell.Equals(""))
                    {
                        Head[i].TypeCell = TypeEnum.String;
                    }
                    ExcelCell cell = new ExcelCell(Head[i].Field, row[Head[i].Field].ToString(), Head[i].TypeCell);
                    excelRow.add(cell);
                }
                listRow.Add(excelRow);
            }
        }
        private List<ExcelRow> listRow = new List<ExcelRow>();
    
        private StringBuilder OutFileContent = new StringBuilder();
        public void add(ExcelRow row) {
            ExcelRow excelRow = new ExcelRow();
            for (int i = 0; i < row.cells.Count(); i++)
            {
                ExcelCell cell = row.cells[i];
                excelRow.add(cell);
            }
    
            listRow.Add(excelRow);
        }
        public StringBuilder getExcelSheet()
        {
            OutFileContent = AddHeadFile(OutFileContent);
            OutFileContent.Append("<Row ss:AutoFitHeight=\"0\">");
            for (int i = 0; i < Head.Length; i++)
            {
                OutFileContent.Append("<Cell><Data ss:Type=\"String\">" + Head[i].Title + "</Data></Cell>");
            }
            OutFileContent.Append("</Row>");
            for (int i = 0; i < listRow.Count; i++)
            {
                OutFileContent.Append(listRow[i].getRow(Head));
            }
            OutFileContent = AddEndFile(OutFileContent);
            return OutFileContent;
        }
        public ExcelRow[] rows
        {
            get
            {
                ExcelRow[] row = new ExcelRow[listRow.Count];
                for (int i = 0; i < listRow.Count; i++)
                {
                    row[i] = listRow[i];
                }
                return row;
            }
        }
        private StringBuilder AddHeadFile(StringBuilder OutFileContent)
        {
            if (Name==null)
            {
                Name = "Sheet";
            }
            OutFileContent.Append(" <Worksheet ss:Name=\"" + Name + "\">\r\n");
            OutFileContent.Append("  <Table ss:ExpandedColumnCount=\"255\" x:FullColumns=\"1\" \r\n");
            OutFileContent.Append("x:FullRows=\"1\" ss:StyleID=\"s62\" ss:DefaultColumnWidth=\"75\" ss:DefaultRowHeight=\"20.25\">\r\n");
            OutFileContent.Append("<Column ss:StyleID=\"s62\" ss:AutoFitWidth=\"0\" ss:Width=\"112.5\"/>\r\n");
            return OutFileContent;
        }
        private StringBuilder AddEndFile(StringBuilder OutFileContent)
        {
            OutFileContent.Append("</Table>\r\n");
            OutFileContent.Append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">\r\n");
            OutFileContent.Append("<Unsynced/>\r\n");
            OutFileContent.Append("<Print>\r\n");
            OutFileContent.Append("    <ValidPrinterInfo/>\r\n");
            OutFileContent.Append("    <PaperSizeIndex>9</PaperSizeIndex>\r\n");
            OutFileContent.Append("    <HorizontalResolution>600</HorizontalResolution>\r\n");
            OutFileContent.Append("    <VerticalResolution>0</VerticalResolution>\r\n");
            OutFileContent.Append("</Print>\r\n");
            OutFileContent.Append("<Selected/>\r\n");
            OutFileContent.Append("<Panes>\r\n");
            OutFileContent.Append("    <Pane>\r\n");
            OutFileContent.Append("    <Number>3</Number>\r\n");
            OutFileContent.Append("    <RangeSelection>R1:R65536</RangeSelection>\r\n");
            OutFileContent.Append("    </Pane>\r\n");
            OutFileContent.Append("</Panes>\r\n");
            OutFileContent.Append("<ProtectObjects>False</ProtectObjects>\r\n");
            OutFileContent.Append("<ProtectScenarios>False</ProtectScenarios>\r\n");
            OutFileContent.Append("</WorksheetOptions>\r\n");
            OutFileContent.Append("</Worksheet>\r\n");
            return OutFileContent;
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
        public class IExcelCell
        {
          /// <summary>
          /// 样式的ID
          /// </summary>
            public string StyleID { set; get; }
            /// <summary>
            /// 单元格的格式
            /// </summary>
            public TypeEnum TypeCell { set; get; }
            /// <summary>
            /// 进行判断来输出所对应的内容
            /// </summary>
            public Dictionary<string, string> DisplayContent { set; get; }
        }
        public enum TypeEnum
        {
            String,
            Number
        }

    导出Excel是用的类似拼接字符串的方式来实现的,以上代码仅供参考

  • 相关阅读:
    ubuntu sudo apt-get update 失败 解决方法
    Table 'performance_schema.session_variables' doesn't exist
    进程间的几种通信方式
    linux优先级、性能监控指令
    chmod修改文件的权限/chown修改文件和目录的所有者
    Akka学习博客
    RFID Hacking③:使用ProxMark3嗅探银行闪付卡信息
    技术分享:逆向破解华为路由器第二部分
    玩转无线电 -- 温哥华天车 RFID 票务系统
    自己搭建Wifi Pineapple Mark V
  • 原文地址:https://www.cnblogs.com/shijiewutonghua/p/2983862.html
Copyright © 2011-2022 走看看