网上找了很多资料但是发现不行 老是报错,所以自己苦心研究,终于没毛病
首先引用命名空间 在这里要注意了 Aspose.Cell 有正版的这个要收费的,也有一大把破解版的
using Aspose.Cells;
using Aspose.Cells.Charts;
Excel 方法
public ActionResult Excels()
{
WorkbookDesigner designer = new WorkbookDesigner();
string Template_File_Path = Server.MapPath("/Feil/模板.xlsx");
FileStream fileStream = new FileStream(Template_File_Path, FileMode.Open, FileAccess.Read, FileShare.Read);
//designer.Workbook = new Workbook(fileStream);
//WorksheetCollection worksheets = designer.Workbook.Worksheets;
Workbook workbook = new Workbook(fileStream);
Worksheet sheet = workbook.Worksheets[0]; //第一个工作表
Cells cells = sheet.Cells;//单元格
//这里定义的是横坐标 通常我们叫做x轴
string[] listsum = new string[] { "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010" };
//以下两个数组是我们要使用的数据
int[] str2sum = new int[] { 1, 2, 3, 5, 6, 2, 4, 3, 5, 1 };
int[] str3sum = new int[] { 5, 2, 1, 5, 6,7,2, 3,1, 3 };
//定义样式 后面可调用
Aspose.Cells.Style style = new Aspose.Cells.Style();
style.IsLocked = true;
style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style.Font.Name = "宋体";//文字字体
style.Font.Size = 12;//文字大小
style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线
style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线
style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线
for (int i = 0; i < listsum.Length; i++)
{
//由于项目的需要 根据每个人的需要走 Cells[0,0] 代表的就是第一行第一个单元格 celis[0,1] 代表的就是第一行第二个单元格 以此类推 cells[2,0] 就是第三行第一个单元格
cells[0, i+1].PutValue(listsum[i]);
cells[0, 0].SetStyle(style);//这个主要是给第一行第一列单元格加样式
cells[0, i+1].SetStyle(style);
cells.SetColumnWidthPixel(3, 69);
}
//复制第二行数据
for (int i = 0; i < str2sum.Length; i++)
{
cells[1, 0].PutValue("观察点A");
cells[1, 0].SetStyle(style);
cells[1, i + 1].PutValue(str2sum[i]);
cells[1, i + 1].SetStyle(style);
cells.SetColumnWidthPixel(3, 69);
}
//赋值第三行数据
for (int i = 0; i < str3sum.Length; i++)
{
cells[2, 0].PutValue("观察点B");
cells[2, 0].SetStyle(style);
cells[2, i + 1].PutValue(str3sum[i]);
cells[2, i + 1].SetStyle(style);
cells.SetColumnWidthPixel(3, 69);
}
//创建一个chart到页面 调用CreateStaticReport2()方法
CreateStaticReport2(workbook);
designer.Process();
System.IO.MemoryStream ms = workbook.SaveToStream();//生成数据流
byte[] bt = ms.ToArray();
string fileName = "自动化监测表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";//客户端保存的文件名
//以字符流的形式下载文件
Response.ContentType = "application/vnd.ms-excel";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bt);
Response.Flush();
Response.End();
//return View("getexcel");
}
曲线图方法
private void CreateStaticReport2(Workbook workbook)
{
//创建一个折线图 后面的1,1,25,10都是设置char图的
workbook.Worksheets[0].Charts.Add(ChartType.Line, 1, 1, 25, 10);
Aspose.Cells.Charts.Chart chart = workbook.Worksheets[0].Charts[0];
//折线区域竖线设置为显示颜色设置为灰色
chart.CategoryAxis.MajorGridLines.IsVisible = true;
chart.CategoryAxis.MajorGridLines.Color = Color.Gray;
//折线区域设置横着的网格线显示
//chart.CategoryAxis.MajorTickMark;
//chart.CategoryAxis.MajorGridLines.Color = Color.Gray;
//设置title样式
chart.Title.Text = "自动化监测折线表-1";
chart.Title.TextFont.Color = Color.Gray;
chart.Title.TextFont.IsBold = true;
chart.Title.TextFont.Size = 12;
Cells cells = workbook.Worksheets[0].Cells;
//Set Properties of nseries控制折线有多长 控制系列显示多少
//注意:这里的A2:F2代表什么Excel你仔细点就会发现第一列是A,第2列是B,所以在这里一定要注意
chart.NSeries.Add("Sheet1!A2:F" +Convert.ToInt32(cells.Rows.Count) + "", false);
//Set NSeries Category Datasource
chart.NSeries.CategoryData = "Sheet1!H1:F9";
//for (int i = 0; i < cells.Rows.Count; i++)
//{
// if (i == 0)
// {
// continue;
// }
// string name = cells[i, 6].Value.ToString();
// //设置每条折线的名称
// chart.NSeries[i-1].Name = name;
//}
//loop over the Nseriese
for (int i = 0; i < chart.NSeries.Count; i++)
{
//设置系列的名称
chart.NSeries[i].Name = cells[i + 1, 0].Value.ToString();
chart.NSeries[i].MarkerStyle = ChartMarkerType.Circle;
//设置线的宽度
chart.NSeries[i].Line.Weight = WeightType.MediumLine;
//设置每个值坐标点的样式
chart.NSeries[i].MarkerStyle = ChartMarkerType.Circle;
chart.NSeries[i].MarkerSize = 5;
chart.NSeries[i].MarkerBackgroundColor = Color.White;
chart.NSeries[i].MarkerForegroundColor = Color.Gray;
每个折线向显示出值
chart.NSeries[i].DataLabels.IsValueShown = false;
chart.NSeries[i].DataLabels.TextFont.Color = Color.Gray;
}
//设置x轴上数据的样式为灰色
chart.CategoryAxis.TickLabels.Font.Color = Color.Gray;
chart.CategoryAxis.TickLabelPosition = TickLabelPositionType.NextToAxis;
//设置y轴的样式
chart.ValueAxis.TickLabelPosition = TickLabelPositionType.Low;
chart.ValueAxis.TickLabels.Font.Color = Color.Gray;
// chart.ValueAxis.TickLabels.TextDirection = TextDirectionType.LeftToRight;
//设置Legend位置以及样式
chart.Legend.Position = LegendPositionType.Bottom;
chart.Legend.TextFont.Color = Color.Gray;
chart.Legend.Border.Color = Color.Gray;
}
在此附上Aspose.cell dl下载地址