1 ///
4 /// 集合
5 ///
6 public static DataTable ToDataTableTow(List
8 DataTable result = new DataTable(); 9 if (list.Count > 0) 10 { 11 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 12
13 foreach (PropertyInfo pi in propertys) 14 { 15 result.Columns.Add(pi.Name, pi.PropertyType); 16 } 17 for (int i = 0; i < list.Count; i++) 18 { 19 ArrayList tempList = new ArrayList(); 20 foreach (PropertyInfo pi in propertys) 21 { 22 object obj = pi.GetValue(list[i], null); 23 tempList.Add(obj); 24 } 25 object[] array = tempList.ToArray(); 26 result.LoadDataRow(array, true); 27 } 28 } 29 return result; 30 }
///
/// 保存路径
/// 数据源
public static MemoryStream CreateExcel(DataTable table)
{
MemoryStream stream = new MemoryStream(); using (var workbook = SpreadsheetDocument.Create(stream, DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook))
{ var workbookPart = workbook.AddWorkbookPart();
workbook.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook();
workbook.WorkbookPart.Workbook.Sheets = new DocumentFormat.OpenXml.Spreadsheet.Sheets(); uint sheetId = 1; bool isAddStyle = false; //foreach (DataTable table in dataTables) //{
var sheetPart = workbook.WorkbookPart.AddNewPart
sheetPart.Worksheet = new Worksheet(); if (!isAddStyle)
{ var stylesPart = workbook.WorkbookPart.AddNewPart
Stylesheet styles = new CustomStylesheet();
styles.Save(stylesPart);
isAddStyle = true;
} //Columns headColumns = CrateColunms(table); //sheetPart.Worksheet.Append(headColumns);
DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = workbook.WorkbookPart.Workbook.GetFirstChild
{
sheetId = sheets.Elements
1;
} string sheetName = "电子单";
DocumentFormat.OpenXml.Spreadsheet.Sheet sheet \= new DocumentFormat.OpenXml.Spreadsheet.Sheet()
{
Id \= relationshipId,
SheetId \= sheetId,
Name \= sheetName
};
sheets.Append(sheet);//创建表
DocumentFormat.OpenXml.Spreadsheet.Row headerRow = new DocumentFormat.OpenXml.Spreadsheet.Row();
List<String> columns = new List<string\>(); foreach (DataColumn column in table.Columns)
{
columns.Add(column.ColumnName);
DocumentFormat.OpenXml.Spreadsheet.Cell cell \= new DocumentFormat.OpenXml.Spreadsheet.Cell();
cell.DataType \= DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
cell.StyleIndex \= 11;
cell.CellValue \= new DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName);
headerRow.AppendChild(cell);
}
sheetData.AppendChild(headerRow);//创建表头
foreach (DataRow dsrow in table.Rows)
{
DocumentFormat.OpenXml.Spreadsheet.Row newRow \= new DocumentFormat.OpenXml.Spreadsheet.Row(); foreach (String col in columns)
{
DocumentFormat.OpenXml.Spreadsheet.Cell cell \= new DocumentFormat.OpenXml.Spreadsheet.Cell();
cell.DataType \= DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
cell.StyleIndex \= 10;
cell.CellValue \= new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow\[col\].ToString()); //
newRow.AppendChild(cell);
}
sheetData.AppendChild(newRow);
}
sheetPart.Worksheet.Append(sheetData);//创建单元格
workbook.Close();
}
stream.Position = 0; return stream;
}
//字符流的形式下载Excel
1 DataTable table = ElectronicReceiptView.ToDataTableTow(proList); 2 var stream= ElectronicReceiptView.CreateExcel(table); 3 return File(stream, "application/ms-excel", name);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章