C#--对上传的Excel文档的处理
注:ToString对数值字符串的处理
string nID=555;
nID.ToString("00000000"); ---00000555
var oFile = Request.Form.Files["file"];
Workbook workBook = new Workbook(path);
Worksheet workSheet = workBook.Worksheets["Sheet1"]; //判断是否能找到Sheet1
Cells cell = workSheet.Cells;
string str = cell.GetRow(0)[i].StringValue; //i为column索引 从0开始 获取单元格的内容
创建一个Sheet表(并将excel表保存到Path路径)
//Workbook workbook = new Workbook(); //工作簿 //Name :就是sheet表的名字(string) //string[] ColumnNames = new string[] { "Column1", "Column2", "Column3", "column4", "column5" }; (列名)首行的名字(主要记录有多少列,方便循环插入数据)
//List<string[]> ArrPrint = new List<string[]>(); ArrPrint里面包含所有的报表信息包括列头
//ArrPrint.Add(ColumnNames);
//string[] arr = new string[] {data1,data2,data3,data4,data5 } ArrPrint.Add(arr);将要所有要记录的数据全部存进去
//调用CreateSheet(workbook, 0, "Fapiao", ColumnNames, ArrPrint);
//workbook.Save(Path);将excel表保存到这个路径
internal static void CreateSheet(Workbook workbook, int num, string Name, string[] ColumnNames, List<string[]> arrayList) { workbook.Worksheets.Add(Name); Worksheet sheet = workbook.Worksheets[num]; //工作表 Cells cells = sheet.Cells;//单元格 Style style = workbook.CreateStyle();//新增样式 style.Font.Name = "宋体";//文字字体 style.Font.Size = 12; //文字大小 style.Font.IsBold = true;//粗体 style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
//遍历行和列 可获取单元格并填充数据
//因为arrarlist中包含表头所坐标和单元格是对应的
if (arrayList.Count > 1) { for (int k = 0; k < arrayList.Count; k++) { for (int i = 0; i < ColumnNames.Length; i++) { cells[k, i].PutValue(arrayList[k][i]); cells[k, i].SetStyle(style); } } } sheet.AutoFitColumns(); sheet.AutoFitRows(); }
根据Path路径下载excel表
public IActionResult ExportWorkList(string filePath) { //打开一个现有文件供读取 var stream = System.IO.File.OpenRead(filePath); //返回指定路径字符串的扩展名(包括句点".")。 .xlsx string fileExt = System.IO.Path.GetExtension(filePath); var provider = new FileExtensionContentTypeProvider(); //文件扩展名和内容类型的交叉引用表 var memi = provider.Mappings[fileExt]; //三个参数 1.包含文件内容的文件流 2.内容类型 3.filedownloadName
//GetFileName 返回路径中最后一个目录分隔符'\'之后的字符。 list.xlsx
return File(stream, memi, Path.GetFileName(filePath)); }