ExcelHelper office 导出

要是服务器上没有装着excel 可以用c#导出excel表吗

举报违规检举侵权投诉|2009-08-10 17:36 风之成 | 分类:办公软件 | 浏览2279次

租用的空间 服务器上没有装着office excel,可以用c#导出excel表吗?
怎样做?给点代码……

分享到:

举报违规检举侵权投诉| 2009-08-10 17:57 提问者采纳

可以使用二进制读写Excel的开源组件org.in2bits.MyXls.dll导出真正的Excel文件。 以下是我简单封装的一个ExcelHelper using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Collections.Generic; using org.in2bits.MyXls; using org.in2bits.MyXls.ByteUtil; /// <summary> ///ExcelHelper 的摘要说明 /// </summary> public class ExcelHelper {     protected ExcelHelper()     {             }     public class TableStruct     {         private string _TableName;         private string _TableCaption;         private List<ColumnStruct> _ColumnInfoAry;         public string TableName         {             get             {                 if (string.IsNullOrEmpty(_TableName))                 {                     return string.Empty;                 }                 return _TableName;             }             set             {                 _TableName = value;             }         }         public string TableCaption         {             get             {                 if (string.IsNullOrEmpty(_TableCaption))                 {                     return TableName;                 }                 return _TableCaption;             }             set             {                 _TableCaption = value;             }         }         public List<ColumnStruct> ColumnInfoAry         {             get             {                 if (_ColumnInfoAry == null)                 {                     _ColumnInfoAry = new List<ColumnStruct>();                 }                 return _ColumnInfoAry;             }         }         public void AddColumnInfo(ColumnStruct ColumnInfo)         {             if (ColumnInfo == null)             {                 return;             }             if (_ColumnInfoAry == null)             {                 _ColumnInfoAry = new List<ColumnStruct>();                             }             foreach (ColumnStruct col in _ColumnInfoAry)             {                 if (col.ColumnName.Equals(ColumnInfo.ColumnName, StringComparison.OrdinalIgnoreCase))                 {                     return;                 }             }             _ColumnInfoAry.Add(ColumnInfo);         }         public ColumnStruct GetColumnInfo(string ColumnName)         {             if (string.IsNullOrEmpty(ColumnName) )             {                 return null;             }             if (_ColumnInfoAry == null)             {                 return null;             }             ColumnStruct ColumnInfo = null;              foreach (ColumnStruct col in _ColumnInfoAry)             {                 if (col.ColumnName.Equals(ColumnName, StringComparison.OrdinalIgnoreCase))                 {                     ColumnInfo = col;                 }             }             return ColumnInfo;         }    }     public class ColumnStruct     {         private string _ColumnName;         private string _ColumnCaption;         private string _ColumnTextFormat;        public string ColumnName         {             get             {                 if (string.IsNullOrEmpty(_ColumnName))                 {                     return string.Empty;                 }                 return _ColumnName;             }             set             {                 _ColumnName = value;             }         }         public string ColumnCaption         {             get             {                 if (string.IsNullOrEmpty(_ColumnCaption))                 {                     return ColumnName;                 }                 return _ColumnCaption;             }             set             {                 _ColumnCaption = value;             }         }        public string ColumnTextFormat         {             get             {                 if (string.IsNullOrEmpty(_ColumnTextFormat))                 {                     return string.Empty;                 }                 return _ColumnTextFormat;             }             set             {                 _ColumnTextFormat = value;             }         }     }    public static void ExportToExcel(DataSet ds,List<TableStruct> TableInfoAry)     {         if (ds == null)         {             ds = new DataSet();         }         if ( TableInfoAry == null )         {             TableInfoAry = new List<TableStruct>();         }        XlsDocument xls = new XlsDocument();         xls.FileName = DateTime.Now.ToString("yyyyMMddHHmmssffff",System.Globalization.DateTimeFormatInfo.InvariantInfo);         xls.SummaryInformation.Author = "wangmh"; //填加xls文件作者信息         xls.SummaryInformation.NameOfCreatingApplication = "Microsoft Excel"; //填加xls文件创建程序信息         xls.SummaryInformation.LastSavedBy = "wangmh"; //填加xls文件最后保存者信息         xls.SummaryInformation.Comments = "Gwm"; //填加xls文件作者信息         xls.SummaryInformation.Title = "Gwm"; //填加xls文件标题信息         xls.SummaryInformation.Subject = "Gwm";//填加文件主题信息         xls.DocumentSummaryInformation.Company = "Gwm";//填加文件公司信息         foreach (TableStruct TableInfo in TableInfoAry)         {             DataTable dt = ds.Tables[TableInfo.TableName];             if (dt == null)             {                 continue;             }             Worksheet sheet = xls.Workbook.Worksheets.Add(TableInfo.TableCaption);                          //设置标头栏             ushort ColumnIndex = 1;             foreach (ColumnStruct ColStruct in TableInfo.ColumnInfoAry)             {                 ushort RowIndex = 1;                 Row row = sheet.Rows.AddRow(RowIndex);                 if (!dt.Columns.Contains(ColStruct.ColumnName))                 {                     continue;                 }                Cell cell = null;                 if (row.CellExists(ColumnIndex))                 {                     cell = row.GetCell(ColumnIndex);                 }                 else                 {                     cell = sheet.Cells.Add(RowIndex, ColumnIndex, null);                     //row.AddCell(cell);                 }                 cell.Value = ColStruct.ColumnCaption;                 cell.Font.Weight = FontWeight.Bold;                 cell.HorizontalAlignment = HorizontalAlignments.Centered;                 cell.BottomLineStyle = 2;                 cell.BottomLineColor = Colors.Grey;                 cell.Font.Height = 10 * 20;                 cell.VerticalAlignment = VerticalAlignments.Centered;                ushort ColumnMaxLength = GetColumnValueMaxLength(dt, ColStruct);                 //设定列宽为自适应宽度                 ColumnInfo colInfo = new ColumnInfo(xls, sheet);//生成列格式对象                 //设定colInfo格式的起作用的列为第1列到第5列(列格式为0-base)                 colInfo.ColumnIndexStart = (ushort)(ColumnIndex-1);                 colInfo.ColumnIndexEnd = colInfo.ColumnIndexStart;                 colInfo.Width = (ushort)(ColumnMaxLength * 256);//列的宽度计量单位为 1/256 字符宽                 sheet.AddColumnInfo(colInfo);//把格式附加到sheet页上(注:AddColumnInfo方法有点小问题,不能把colInfo对象多次附给sheet页)                ColumnIndex++;             }            for (ushort i = 0; i < dt.Rows.Count; i++)             {                 ushort RowIndex = (ushort)(i + 2);                 Row row = sheet.Rows.AddRow(RowIndex);                 int j = 0;                 foreach (ColumnStruct ColStruct in TableInfo.ColumnInfoAry)                 {                     if ( !dt.Columns.Contains(ColStruct.ColumnName) )                     {                         continue;                     }                    ColumnIndex = (ushort)(j + 1);                     Cell cell = null;                     if (row.CellExists(ColumnIndex))                     {                         cell = row.GetCell(ColumnIndex);                     }                     else                     {                         cell = sheet.Cells.Add(RowIndex, ColumnIndex, null);                         //row.AddCell(cell);                     }                    object objValue = dt.Rows[i][ColStruct.ColumnName];                     cell.Value = GetColumnValueFormat(dt,ColStruct,objValue);                     cell.Font.Weight = FontWeight.Normal;                     cell.HorizontalAlignment = HorizontalAlignments.Centered;                     j++;                 }             }         }         xls.Send();     }    private static string GetColumnValueFormat(DataTable dt, ColumnStruct ColStruct, Object ObjValue)     {         string ColumnValue = string.Empty;         if ( ObjValue != null && ObjValue!= DBNull.Value )         {             string ColumnDataType = dt.Columns[ColStruct.ColumnName].DataType.ToString();             switch (ColumnDataType)             {                 case "System.Boolean":                 case "System.Byte":                     {                         ColumnValue = ObjValue.ToString();                         break;                     }                 case "System.Decimal":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToDecimal(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToDecimal(ObjValue).ToString(ColStruct.ColumnTextFormat);                         }                         break;                     }                 case "System.Double":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToDouble(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToDouble(ObjValue).ToString(ColStruct.ColumnTextFormat);                         }                         break;                     }                 case "System.Int64":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToInt64(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToInt64(ObjValue).ToString(ColStruct.ColumnTextFormat);                         }                         break;                     }                 case "System.Int16":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToInt16(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToInt16(ObjValue).ToString(ColStruct.ColumnTextFormat);                         }                         break;                     }                 case "System.Int32":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToInt32(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToInt32(ObjValue).ToString(ColStruct.ColumnTextFormat);                         }                         break;                     }                 case "System.DateTime":                     {                         if (string.IsNullOrEmpty(ColStruct.ColumnTextFormat))                         {                             ColumnValue = Convert.ToDateTime(ObjValue).ToString();                         }                         else                         {                             ColumnValue = Convert.ToDateTime(ObjValue).ToString(ColStruct.ColumnTextFormat,System.Globalization.DateTimeFormatInfo.InvariantInfo);                         }                         break;                     }                 default:                     {                         ColumnValue = ObjValue.ToString();                         break;                     }             }         }         return ColumnValue.Trim();     }    private static ushort GetColumnValueMaxLength(DataTable dt, ColumnStruct ColStruct)     {         ushort InitLenth = (ushort)System.Text.Encoding.Default.GetByteCount(ColStruct.ColumnCaption);         ushort MaxLenth = InitLenth;         foreach (DataRow Row in dt.Rows)         {             object ObjValue = Row[ColStruct.ColumnName];             if (ObjValue == null || ObjValue == DBNull.Value)             {                 continue;             }             string ColumnValue = GetColumnValueFormat(dt,ColStruct,ObjValue);             ushort ColumnValueLenth = (ushort)System.Text.Encoding.Default.GetByteCount(ColumnValue);             MaxLenth = ColumnValueLenth > MaxLenth ? ColumnValueLenth : MaxLenth;         }        if (MaxLenth == InitLenth)         {             //标题栏字体较大             MaxLenth += 4;         }         else         {             //内容文本前后与边框空余出一字的间隔             MaxLenth += 2;         }         return (ushort)(MaxLenth * 1.2);     } }页面调用ExcelHelper类中的静态方法ExportDataToExcel导出数据集中指定Table的制定列到Excel文件并输出文件到浏览器客户端。XmlManager.GetString是多语言实现的相关方法,可以直接修改为返回当前列标题字符串。     private void ExportDataToExcel(DSSummary_DetailsQuery_SellInfo ds)     {         System.Collections.Generic.List<ExcelHelper.TableStruct> TableInfoAry = new System.Collections.Generic.List<ExcelHelper.TableStruct>();         ExcelHelper.TableStruct TableInfo = new ExcelHelper.TableStruct();         TableInfo.TableName = ds.DS_Stock.TableName;         TableInfo.TableCaption = XmlManager.GetString("Summary_DetailsQuery_ViewCarInfoCustormerDetail_TitleTxt");        ExcelHelper.ColumnStruct ColStruct = new ExcelHelper.ColumnStruct();         ColStruct.ColumnName = "C_CarNo";         ColStruct.ColumnTextFormat = string.Empty;         ColStruct.ColumnCaption = XmlManager.GetString("IAMS_System_CarInfo_CarNo");         TableInfo.AddColumnInfo(ColStruct);         //……添加其他列信息         TableInfoAry.Add(TableInfo);         ExcelHelper.ExportToExcel(ds, TableInfoAry); } 希望可以帮到你,有什么问题可以联系我。Email:[email protected]

ExcelHelper office 导出,布布扣,bubuko.com

时间: 2024-11-02 14:30:03

ExcelHelper office 导出的相关文章

C#基于Office组件操作Excel

1.    内容简介 实现C#与Excel文件的交互操作,实现以下功能: a)     DataTable 导出到 Excel文件 b)     Model数据实体导出到 Excel文件[List<Model>] c)     导出数据到模版 d)     多DataTable导入到同一Excel文件 e)     对于第四项功能,常见的用途为:最后一行显示的是百分比,为字符型,而这列其它类型为数据型,如果放在同一个DataTable中,显然不合适.此操作类可实现 f)      5.将Exc

[.Net] C# Excel操作类 ExcelHelper

实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模版 4.多DataTable导入到同一Excel文件 对于第四项功能,常见的用途为:最后一行显示的是百分比,为字符型,而这列其它类型为数据型,如果放在同一个DataTable中,显然不合适.此操作类可实现 5.将Excel文件导入到数据库表中 可以指定每个字段的数据类型 此帮助类的代码量不算少,但注释比较详细

C# Excel操作类 ExcelHelper

实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模版 4.多DataTable导入到同一Excel文件 对于第四项功能,常见的用途为:最后一行显示的是百分比,为字符型,而这列其它类型为数据型,如果放在同一个DataTable中,显然不合适.此操作类可实现 5.将Excel文件导入到数据库表中 可以指定每个字段的数据类型 此帮助类的代码量不算少,但注释比较详细

vs2010 office组件dll右键属性找不到”嵌入互操作类型“问题的解决

近期项目碰到个奇怪的问题.在项目中添加excel的引用,然后右键该引用,选择属性,竟然找不到”嵌入互操作类型“,因引用office组件时,需要将其”嵌入互操作类型“设为false,否则编译不通过.后来经过百度,才找到问题的解决方法. 问题: 解决方法1: 修改项目的目标框架为.net framework 4及以上. 解决方法2: 如果项目的目标框架必须为.net framework2.0,那可以在项目文件.csproj中修改. 用txt打开该项目文件, 这样便大工告成. 小菜一碟 2014-10

Excel导入导出帮助类

/// <summary>    /// Excel导入导出帮助类    /// 记得引入 NPOI    /// 下载地址   http://npoi.codeplex.com/releases/    /// </summary> public class ExcelHelper    {        #region 导出Excel /// <summary>        /// 导出Excel  注:model 字段必须加[DisplayName("

MVC NPOI Linq导出Excel通用类

之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = 0, Float = 1, Double = 2, String = 3, DateTime = 4, Date = 5 } public class ExportFieldInfo { /// <summary> /// 字段名,用于反射获取值 /// </summary> publi

php 基于phpexcel制作的导出excel类

最近要写个项目,由于项目中导出excel太多,因此写个类便于使用. <?php /* *@使用方法. *引入类库. * $excel = news excelC(); *$excel->fileName = '文件名称';//设置文件名称,默认为时间戳 *$excel->format = '2007';//文件类型,默认为2007,其他为excel5 *$record = array( 'delKey'=>array('id','addTime','status'),//如果数据$

C#操作Excel文件(转)

实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模版 4.多DataTable导入到同一Excel文件 对于第四项功能,常见的用途为:最后一行显示的是百分比,为字符型,而这列其它类型为数据型,如果放在同一个DataTable中,显然不合适.此操作类可实现 5.将Excel文件导入到数据库表中 可以指定每个字段的数据类型 此帮助类的代码量不算少,但注释比较详细

SqlExcel使用文档及源码

昨天帮朋友做了个小工具,以完成多表连接处理一些数据.今天下班后又做了份使用文档,不知友能看懂否?现将使用文档及源码发布如下,以供有同样需求的朋友下载. 使用文档 一.增.改.查.删 1.增(向sheet中插入数据): INSERT INTO [Employee$](EmployeeId,EmployeeName,BranchId) VALUES('YG2014120001','韩兆新','BM20141201'); 执行Sql前: 执行Sql后: 2.改(更新sheet中的数据): UPDATE