EXCEL로 데이터 내보내기 및 여러 시트 생성
참조: Microsoft.Office.Interop.Excel
DataSet에 여러 DataTable 데이터를 추가할 준비를 합니다.
코드
public void CreateExcel(DataSet ds, string filePath)
{
// excel
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook = null;
Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet = null;
ExcelApp.Visible = true;
ExcelWorkBook = ExcelApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
// excel sheet
List<string> SheetNames = new List<string>();
SheetNames.Add(" ");
SheetNames.Add(" ");
SheetNames.Add(" ");
SheetNames.Add(" ");
SheetNames.Add(" ( )");
SheetNames.Add(" ( )");
for (int i = 1; i < ds.Tables.Count; i++)
ExcelWorkBook.Worksheets.Add(); // sheet excel
for (int i = 0; i < ds.Tables.Count; i++)
{
int r = 1; // excel Position=1
ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets[i + 1];
//
var range = ExcelWorkSheet.get_Range("A1", "K1");
range.Font.Size = 12;
range.Font.Name = " ";
range.ColumnWidth = 17; //
// sheet
for (int col = 1; col <= ds.Tables[i].Columns.Count; col++)
ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Columns[col - 1].ColumnName;
r++;
// excel sheet
for (int row = 0; row < ds.Tables[i].Rows.Count; row++) //r excelRow,col excelColumn
{
//Excel Row=1 ,Col=1
for (int col = 1; col <= ds.Tables[i].Columns.Count; col++)
ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Rows[row][col - 1].ToString();
r++;
}
ExcelWorkSheet.Name = SheetNames[i];
}
ExcelWorkBook.SaveAs(filePath);
ExcelWorkBook.Close();
ExcelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelWorkSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);
GC.Collect();
foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("Excel"))
process.Kill();
}
3. 구글과 유사한 파일을 다운로드한 후 맨 아래에 다운로드한 파일을 표시한다
public ActionResult OutPutExcel()
{
ILog log = LogManager.GetLogger(typeof(SystemSetController));
try
{
DateTime beginTime = Convert.ToDateTime(Request.Form["LiveBeginTime"]);
DateTime endTime = Convert.ToDateTime(Request.Form["LiveEndTime"]);
long liveId = Convert.ToInt32(Request.Form["liveId"]);
// Excel
string fileName = string.Format("{0}.xlsx", DateTime.Now.ToString(@"yyyy-MM-dd-HHmmss"));
//
DataSet ds = _SystemSetBLL.GetLiveAnalysis(beginTime, endTime, liveId);
var filePath = Server.MapPath("~/UploadFile/file/" + fileName);
// EXCEL
_SystemSetBLL.CreateExcel(ds, filePath);
Response.Clear();
Response.Charset = "utf-8";
Response.HeaderEncoding = Encoding.UTF8;
Response.AddHeader("content-type", "application/x-msdownload");
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
Response.ContentType = "application/vnd.ms-excel";
Response.BinaryWrite(System.IO.File.ReadAllBytes(filePath));
Response.End();
}
catch (Exception e)
{
log.Error(" :" + e.Message);
}
return null;
}
주의: 프로젝트가 서버에 배치되면 오류가 발생할 수 있습니다. 왜냐하면 서버가 excel을 설치하지 않았거나 서버에 excel 구성 요소가 제대로 설정되지 않았기 때문입니다. "인터랙티브 사용자"및 다른 것을 선택해야 합니다. 인터넷에서 확인할 수 있습니다. 저도 어디에 있는지 잊어버렸습니다.
그것 없이, 본인은 컴퓨터를 전공했지만, 오랫동안 이 업종을 하지 않아서, 단지 필요로 하는 사람을 돕고 공고히 하기 위해 붙인 것이 좀 천박하다.
다음으로 전송:https://www.cnblogs.com/yxzs/p/4976917.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.