Excel 파일 c#에서 새 워크시트를 생성하는 방법은?
아주 큰 엑셀 파일을 만들어야 하는데, 워크시트 하나에 엑셀 파일은 65k 행까지 포함할 수 있습니다.그래서, 저는 저의 모든 정보를 동적인 여러 워크시트로 나누고 싶습니다.이것은 나의 대략적인 코드입니다.
//------------------Create Excel App--------------------
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(numberOfLetters);
foreach (string letter in letters)
{
xlWorkSheet.Cells[rowIndex, 1] = letter;
rowIndex++;
}
xlWorkBook.SaveAs(pathXL, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
각 루프 안에 새 워크시트를 추가하고 일부 조건을 사용하여 워크시트에 이름을 지정하는 방법(목록 페이지 하단의 Excel에서 볼 수 있는 사용자)
그런 분들이.
foreach (string letter in letters)
{
if (letter == SOME)
{
AddNewWorksheet and give name SOME
}
xlWorkSheet.Cells[rowIndex, 1] = letter;
rowIndex++;
}
그리고 마지막에 모든 워크시트를 저장하는 방법은 무엇입니까?
워크북에 새 워크시트를 추가하려면 다음 코드를 사용합니다.
var xlSheets = xlWorkBook.Sheets as Excel.Sheets;
var xlNewSheet = (Excel.Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing);
xlNewSheet.Name = "newsheet";
// Uncomment a line below if you want the inserted sheet to be the last one
//xlWorkBook.Sheets.Move(After: xlWorkBook.Sheets.Count);
워크북 호출 저장하기Save()
방법:
xlWorkBook.Save();
이것은 MSDN에 부여된 정확한 코드입니다.
Excel.Worksheet newWorksheet;
newWorksheet = (Excel.Worksheet)Globals.ThisWorkbook.Worksheets.Add(
missing, missing, missing, missing);
General(일반) 새 시트를 작성하려면 다음 작업만 수행합니다.
var worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add();
아래와 같은 워크북을 이미 작성했습니다.
var workbook = excel.Workbooks.Add(Type.Missing);
.xls의 경우 65,000개의 레코드로 제한되지만, 2003.xls를 넘어 2007.xlsx 이상으로 "허용"된다면 훨씬 더 많은 행을 가질 수 있습니다.
참고 사항, 질문과 무관하지만 얼마 전에 NPOI 라이브러리를 사용하여 이름을 바꾼 RDLC 및 시트 이름 문제를 해결하기 위해 내보냈습니다. 그 이후로 NPOI를 훨씬 더 많이 사용하기 시작했기 때문에 무료/오픈 소스이며 매우 강력합니다(Java POI에서 .net NPOI로 포팅됨). 하지만 질문의 일부는 아닙니다.이것을 하는 데 대한 예시가 있다면 놀랐습니다(아니요, 저는 그들을 위해 일하지 않습니다) http://npoi.codeplex.com/
시트 이름을 바꾸기 위해 작성한 코드는 다음과 같습니다(결국 다른 메모리 스트림으로 시트를 다시 만듭니다.
------------------------------------------------------------
var excelHelper = new ExcelHelper(bytes);
bytes = excelHelper.RenameTabs("Program Overview", "Go Green Plan", "Milestones", "MAT and EOC", "Annual Financials", "Risk Log", "Risk & Opportunity Log", "RAIL", "Meeting Minutes");
Response.BinaryWrite(bytes);
Response.End();
------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using NPOI.HSSF.UserModel;
namespace Company.Project.Core.Tools
{
public class ExcelHelper
{
private byte[] _ExcelFile;
public ExcelHelper(byte[] excelFile)
{
_ExcelFile = excelFile;
}
public byte[] RenameTabs(params string[] tabNames)
{
byte[] bytes = null;
using (MemoryStream ms = new MemoryStream())
{
ms.Write(_ExcelFile, 0, _ExcelFile.Length);
var workBook = new HSSFWorkbook(ms, true);
if (tabNames != null)
{
using (MemoryStream memoryStream = new MemoryStream())
{
for (int i = 0; i < tabNames.Length; i++)
{
workBook.SetSheetName(i, tabNames[i]);
}
workBook.Write(memoryStream);
bytes = memoryStream.ToArray();
}
}
}
_ExcelFile = bytes;
return bytes;
}
}
언급URL : https://stackoverflow.com/questions/16705651/how-to-create-a-new-worksheet-in-excel-file-c
'programing' 카테고리의 다른 글
텍스트 상자가 이전에 입력한 값으로 자동 채우기 방지 (0) | 2023.09.08 |
---|---|
Python을 사용하여 Excel 파일을 실행 (0) | 2023.09.08 |
Swift 3에서 배열에서 개체 제거 (0) | 2023.09.08 |
docker-compose.yml에서 서비스를 비활성화할 수 있는 방법이 있습니까? (0) | 2023.09.08 |
오류 코드: 1406.데이터가 너무 길어서 열에 사용할 수 없음 - MySQL (0) | 2023.09.08 |