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 ...
随机推荐
- noip2018 pre——Dp
Dp专题 1011: KC的瓷器 (porcelain) 题目描述 KC来到了一个盛产瓷器的国度.他来到了一位商人的店铺.在这个店铺中,KC看到了一个有n(1<=n<=100)排的柜子,每 ...
- java课后作业-4
一.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. public class suiji { private static final int N = 200; private ...
- 开发人员为组件添加自定义的className
在开发过程当中需要给组件写上自己的样式,这个时候怎么办呢? 直接给组件添加className这样是无效的 当给组件添加className之后 在写组件的时候需要对使用你的组件的开发人员提供自定义cla ...
- C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...
- 双倍回文(bzoj 2342)
Description Input 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. Output 输出文件只有一行,即:输入数据中字符串的最长双倍 ...
- set基本用法-----2
#include<cstdio> #include<iostream> #include<cstdlib> #include<cmath> #inclu ...
- git ssh 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Codeforces 920D Tanks
题目链接 题意 有 \(n\) 个容积无限的水缸,初始时水量为\(a_1,a_2,...,a_n\),有一把容积为\(k\)的勺子,可以从一个水缸中舀水倒入另一个水缸中.问能否给出操作序列,使得最终某 ...
- js计算数组中每个元素出现的次数
计算数组中每个元素出现的次数 var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var countedNames = names.redu ...
- Hrbust 2319 Number Game(贪心)
题目链接 Hrbust 2319 首先把二元组排序,$ai$大的排前面,$ai$相同的$bi$大的排前面. 这样的话就满足了Kim的取数顺序,即选每次$ai$最大的. 考虑得坏一些,在$ai$相同的 ...