C# Excel
using System.IO;
using System.Text;
namespace iLIS.Common
{
///<summary>
///生成Excel文档内容
/// 存入工作流
/// </summary>
public class ExcelDocumentx
{
private readonly StreamWriter _streamWriter;
public ExcelDocumentx(Stream stream)
{
_streamWriter = new StreamWriter(stream, Encoding.UTF8);
}
///<summary>
///写入Excel文件头
/// </summary>
public void Begin()
{
const string excelHeader = @"<?xml version='1.0'?>
<?mso-application progid='Excel.Sheet'?>
<Workbook xmlns='urn:schemas-microsoft-com:officce:spreadsheet'
xmlns:o='urn:schemas-microsoft-com:office:office'
xmlns:x='urn:schemas-microsoft-com:office:excel'
xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet'
xmlns:html='http://www.w3.org/TR/REC-html40'>
<DocumentProperties xmlns='urn:schemas-microsoft-com:office:office'>
<Author>Hitek</Author>
<Company>HitekSoft(C) Ltd.,</Company>
<Version>12.00</Version>
</DocumentProperties>
<Styles>
<Style ss:ID='sH'>
<Alignment ss:Vertical='Center' ss:WrapText='1'/>
<Borders>
<Border ss:Position='Bottom' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Left' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Right' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Top' ss:LineStyle='Continuous' ss:Weight='1'/>
</Borders>
<Font ss:FontName='宋体' x:CharSet='134' ss:Size='11' ss:Color='#000000'ss:Bold='1'/>
<Inherior ss:Color='#F2F2F2' ss:Pattern='Solid'/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID='sBD'>
<Alignment ss:Vertical='Center' ss:WrapText='1'/>
<Borders>
<Border ss:Position='Bottom' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Left' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Right' ss:LineStyle='Continuous' ss:Weight='1'/>
<Border ss:Position='Top' ss:LineStyle='Continuous' ss:Weight='1'/>
</Borders>
</Style>
</Styles>";
_streamWriter.WriteLine(excelHeader);
}
///<summary>
///添加工作表
/// </summary>
/// <param name="name">表单名称</param>
/// <param name="defaultRowHeight">默认行高</param>
/// <param name="defaultColumnWidth">默认列宽</param>
public void BeginSheet(string name, double defaultRowHeight = 0, double defaultColumnWidth = 0)
{
_streamWriter.WriteLine("<Worksheet ss:Name='" + name + "'");
_streamWriter.Write("<Table");
//默认行高
if (defaultRowHeight > 0.0001)
_streamWriter.Write(string.Format("ss:DefaultRowHeight='{0}'", defaultRowHeight));
//默认列宽
if (defaultColumnWidth > 0.0001)
_streamWriter.Write(string.Format("ss:ss:DefaultColumnWidth='{0}'", defaultColumnWidth));
_streamWriter.WriteLine(">");
}
///<summary>
///添加标题行
/// </summary>
/// <param name="colNames">标题行的名称</param>
/// <param name="colWidths">标题行的列宽</param>
public void AddHeaderRow(string[] colNames, double[] colWidths = null)
{
//列宽
if (colWidths != null && colWidths.Length > 0)
{
for (int i = 0; i < colWidths.Length; i++)
{
if (colWidths[i] > 0.0001)
_streamWriter.WriteLine(string.Format("<Column ss:Index='{0}' ss:AutoFitWidth='0' ss:Width='{1}'/>", i + 1, colWidths[i]));
}
}
AddHeaderRow(colNames, "sH");
}
///<summary>
///添加一行
/// </summary>
///<param name="styleName">样式名称</param>
///<param name="vals"></param>
public void AddRow(object[] vals, string styleName = null)
{
if (string.IsNullOrEmpty(styleName))
styleName = "sBD";
_streamWriter.WriteLine("<Row>");
foreach (var val in vals)
{
string strval = val == null ? "" : val.ToString()
.Replace("<", "<")
.Replace(">", ">");
_streamWriter.WriteLine("<Cell ss:StyleID='{0}'><Data ss:Type='String'>{1}</Data></Cell>\n", styleName, strval);
}
_streamWriter.WriteLine("</Row>");
}
///<summary>
///完成表单
/// </summary>
public void EndSheet()
{
_streamWriter.WriteLine("</Table>");
_streamWriter.WriteLine("</Worksheet>");
}
///<summary>
///写入Excel文件结束 完成导出
/// </summary>
public void End()
{
_streamWriter.WriteLine("</Workbook>");
_streamWriter.Close();
}
}
}
C# Excel的更多相关文章
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- excel 日期/数字格式不生效需要但双击才会生效的解决办法
原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
- Word/Excel 在线预览
前言 近日项目中做到一个功能,需要上传附件后能够在线预览.之前也没做过这类似的,于是乎就查找了相关资料,.net实现Office文件预览大概有这几种方式: ① 使用Microsoft的Office组件 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- C#中如何给Excel添加水印
我们知道Microsoft Excel并没有内置的功能直接给Excel表添加水印,但是其实我们可以用其他变通的方式来解决此问题,如通过添加页眉图片或艺术字的方法来模仿水印的外观.所以在这篇文章中,我将 ...
- C#中如何在Excel工作表创建混合型图表
在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...
- C#通过NPOI操作Excel
参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...
随机推荐
- Android jni 编程入门
本文将介绍如何使用eclipse和ndk-build来编写一个基于Android4.4版本的包含有.so动态库的安卓程序. 前提是已经安装和配置好了诸如SDK,NDK等编译环境.下面开始编程! 1 程 ...
- vue的v-for循环普通数组、对象数组、对象、数字
如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- BZOJ 3640: JC的小苹果
3640: JC的小苹果 Time Limit: 15 Sec Memory Limit: 256 MBSubmit: 425 Solved: 155[Submit][Status][Discus ...
- hdu 2582(数论相关定理+素数筛选+整数分解)
f(n) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 5698(杨辉三角的性质+逆元)
---恢复内容开始--- 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...
- usaco-Subset Sums
题意: 给出一个1-n的数列,求把它分为两组数使得两组数的和相等的方案数. 分析: 如果可能分成两组,那么(n+1)n/2一定为偶数,且n%4=2或3.可以设dp[i][j]表示从1-i中的数拼出的方 ...
- eclipse启动Tomcat时报错:严重: Exception loading sessions from persistent storage
我的项目工程是Spring+hibernate+structs 1.0,最近启动tomcat时多次遇到如下异常: 严重: IOException while loading persisted se ...
- CTAS都能带走源表的哪些属性
CREATE TABLE ... AS SELECT statement(CTAS):用CTAS语句可以根据一个存在的表创建一个新的表,而且能够根据对应的过滤条件将源表部分或者全部数据插入到新表当中. ...
- oracle小知识点16-诊断事件diagnostic events
http://blog.itpub.net/28539951/viewspace-1983919/
- PathInterpolator
PathInterpolator 在v4 support library:Revision 22.1.0的时候,Google在兼容库中增加了几个新的类,用于创建更加真实的动画效果. Added the ...