MyXls是用C#开源项目,可以应用于silverlight 、asp.net 或者 .net应用程序上。它根据微软公开的Excle文档格式文件(BIFF),以二进制格式直接生成excel文档,支持Excel versions 97 - 2007. 。这意味着可以不用在服务器上安装office就能够以excle格式输出数据库中存储的数据了。这对于许多项目来说都是很有用的。
目前MyXls已经实现了单元格(cell)的格式设置,包括文本颜色、文本大小、字体、单位格边框、底色、列宽、行高,合并单元格,多个sheet页等功能。
目前MyXls还不支持在excel文档中生成对象(如、文本框、按钮等)。MyXls主页称即将实现对excel文件的读取功能,个人认为读取的功能的用处还不是很多。
以下转自http://www.cnblogs.com/heone/archive/2009/03/08/1283211.html
示例来了: 下载MyXls示例文件
string sheetName = "chc 实例";
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(sheetName);//填加名为"chc 实例"的sheet页
Cells cells = sheet.Cells;//Cells实例是sheet页中单元格(cell)集合
//单元格1-base
Cell cell = cells.Add(1, 2, "抗");//设定第一行,第二例单元格的值
cell.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
cell.Font.FontName = "方正舒体";//设定字体
cell.Font.Height = 20 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
cell.UseBorder = true;//使用边框
cell.BottomLineStyle = 2;//设定边框底线为粗线
cell.BottomLineColor = Colors.DarkRed;//设定颜色为暗红
//cell的格式还可以定义在一个xf对象中
XF cellXF = xls.NewXF();//为xls生成一个XF实例(XF是cell格式对象)
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
cellXF.Font.FontName = "方正舒体";//设定字体
cellXF.Font.Height = 20 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
cellXF.UseBorder = true;//使用边框
cellXF.BottomLineStyle = 2;//设定边框底线为粗线
cellXF.BottomLineColor = Colors.DarkRed;//设定颜色为暗红
cell = cells.AddValueCellXF(2, 2,"震", cellXF);//以设定好的格式填加cell
cellXF.Font.FontName = "仿宋_GB2312";
cell = cells.AddValueCellXF(3, 2, "救", cellXF);//格式可以多次使用
ColumnInfo colInfo = new ColumnInfo(xls, sheet);//生成列格式对象
//设定colInfo格式的起作用的列为第2列到第5列(列格式为0-base)
colInfo.ColumnIndexStart = 1;//起始列为第二列
colInfo.ColumnIndexEnd = 5;//终止列为第六列
colInfo.Width = 15 * 256;//列的宽度计量单位为 1/256 字符宽
sheet.AddColumnInfo(colInfo);//把格式附加到sheet页上(注:AddColumnInfo方法有点小问题,不给把colInfo对象多次附给sheet页)
colInfo.ColumnIndexEnd = 6;//可以更改列对象的值
ColumnInfo colInfo2 = new ColumnInfo(xls, sheet);//通过新生成一个列格式对象,才到能设定其它列宽度
colInfo2.ColumnIndexStart = 7;
colInfo2.ColumnIndexEnd = 8;
colInfo2.Width = 1 * 256;
sheet.AddColumnInfo(colInfo2);
sheet.AddMergeArea(meaA);//填加合并单元格
cellXF.VerticalAlignment= VerticalAlignments.Centered;
cellXF.Font.Height = 48 * 20;
cellXF.Font.Bold = true;
cellXF.Pattern = 3;//设定单元格填充风格。如果设定为0,则是纯色填充
cellXF.PatternBackgroundColor = Colors.DarkRed;//填充的底色
cellXF.PatternColor = Colors.DarkGreen;//设定填充线条的颜色
cell = cells.Add(1, 3, "灾",cellXF);
doc.FileName = "MyXlsWebAppDemo.xls";
Worksheet sheet = doc.Workbook.Worksheets.Add("Hello World Sheet");
Cell cell = sheet.Cells.Add(1, 1, "Hello,MyXls!");
for (int i = 2; i <= 10; i++)
{
cell = sheet.Cells.Add(i, 1, "51CTO五岁了!");
cell.Font.Weight = FontWeight.Bold;
cell.Font.ColorIndex =2;//白 红 绿 蓝 黄 粉红等等颜色,可以通过源代码了解颜色
}
doc.Send();
xls.FileName = "MyXlsDemo.xls";//设定Excel文件名
xls.SummaryInformation.Author = "Terry Li"; //填加Excel文件作者信息
xls.SummaryInformation.Subject = "MyXls Demo";//填加文件主题信息
xls.DocumentSummaryInformation.Company = "in2bits.org";//填加文件公司信息
string sheetName = "第一个Sheet Demo";#region
string sheetName = "第一个Sheet Demo";
Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);//填加名为"第一个Sheet Demo"的sheet页
Cells cells = sheet.Cells;//Cells实例是sheet页中单元格(cell)集合
//单元格1-base
Cell cell = cells.Add(2, 3, "三");//设定第2行,第3例单元格的值
cell.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
cell.Font.FontName = "行楷";//设定字体
cell.Font.Height = 30 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
cell.UseBorder = true;//使用边框
cell.BottomLineStyle = 2;//设定边框底线为粗线
cell.BottomLineColor = Colors.Red;//设定颜色为红色
cell.RightLineStyle = 2;
cell.RightLineColor = Colors.Red;
//cell的格式还可以定义在一个xf对象中
XF cellXF = xls.NewXF();//为xls生成一个XF实例(XF是cell格式对象)
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
cellXF.Font.FontName = "隶书";//设定字体
cellXF.Font.Height = 30 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
cellXF.UseBorder = true;//使用边框
cellXF.BottomLineStyle = 2;//设定边框底线为粗线
cellXF.BottomLineColor = Colors.Green;//设定颜色为绿色
cellXF.LeftLineStyle = 2; //设定边框左线为粗线
cellXF.LeftLineColor = Colors.Green;
cell = cells.Add(3, 3, "国", cellXF);//以设定好的格式填加cell
cellXF.Font.FontName = "仿宋_GB2312";
cellXF.BottomLineStyle = 2; //设定边框底线为粗线
cellXF.BottomLineColor = Colors.Blue;//设定颜色为蓝色
cellXF.RightLineStyle = 2;//设定边框右线为粗线
cellXF.RightLineColor = Colors.Blue;//设定颜色为蓝色
cellXF.LeftLineStyle = 0;
cell = cells.Add(4, 3, "志", cellXF);//格式可以多次使用
//ColumnInfo colInfo = new ColumnInfo(xls, sheet);//生成列格式对象
设定colInfo格式的起作用的列为第2列到第5列(列格式为0-base)
//colInfo.ColumnIndexStart = 1;//起始列为第二列
//colInfo.ColumnIndexEnd = 5;//终止列为第六列
//colInfo.Width = 15 * 256;//列的宽度计量单位为 1/256 字符宽
//sheet.AddColumnInfo(colInfo);//把格式附加到sheet页上(注:AddColumnInfo方法有点小问题,不给把colInfo对象多次附给sheet页)
//colInfo.ColumnIndexEnd = 6;//可以更改列对象的值
//ColumnInfo colInfo2 = new ColumnInfo(xls, sheet);//通过新生成一个列格式对象,才到能设定其它列宽度
//colInfo2.ColumnIndexStart = 7;
//colInfo2.ColumnIndexEnd = 8;
//colInfo2.Width = 20 * 256;
//sheet.AddColumnInfo(colInfo2);
MergeArea meaA = new MergeArea(2, 3, 5, 7);//一个合并单元格实例(合并第2行、第5例 到 第3行、第7例)
sheet.AddMergeArea(meaA);//填加合并单元格
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.Font.FontName = "隶书";
//cellXF.Font.Height = 48 * 20;
//cellXF.Font.Bold = true;
cellXF.Pattern = 1;//设定单元格填充风格。如果设定为0,则是纯色填充(无色),1代表没有间隙的实色
cellXF.PatternBackgroundColor = Colors.Red;//填充的底色
cellXF.PatternColor = Colors.Green;//设定填充线条的颜色
cell = cells.Add(2, 5, "晋/陈寿", cellXF);
#endregion
sheet.Cells.Merge(7, 9, 1, 4);
cell = cells.Add(7, 1, "MyXls 合并单元格 Demo");
cell.HorizontalAlignment = HorizontalAlignments.Centered;
cell.VerticalAlignment = VerticalAlignments.Centered;
for (int sheetNumber = 1; sheetNumber <= 4; sheetNumber++)
{
sheetName = "Sheet " + sheetNumber;
int rowMin = sheetNumber;
int rowCount = sheetNumber + 10;
int colMin = sheetNumber;
int colCount = sheetNumber + 10;
sheet = xls.Workbook.Worksheets.Add(sheetName);
cells = sheet.Cells;
for (int r = 0; r < rowCount; r++)
{
if (r == 0)
{
for (int c = 0; c < colCount; c++)
{
cells.Add(rowMin + r, colMin + c, "Column" + (c + 1)).Font.Bold = true;
}
}
else
{
for (int c = 0; c < colCount; c++)
{
int val = r + c;
cell = cells.Add(rowMin + r, colMin + c, val+ ":51CTO五岁了!");
if (val % 2 != 0)
{
cell.HorizontalAlignment = HorizontalAlignments.Centered;
cell.Font.FontName = "Times New Roman";
cell.Font.Underline = UnderlineTypes.Double;
cell.Font.ColorIndex = 2;
cell.Rotation = 45; //字符倾斜45度
}
}
}
}
}
xls.Send();//XlsDocument.SendMethods.Inline