[DevExpress] Spread Sheet 엑셀저장
MS-Office를 사용하는 것이 좋으나, 상황에 따라서 dev의 spread를 사용해야 될 때가 있다.
그럴 때음 다음과 같이 사용하며 특징은 한번 그리드를 엑셀로 내린다음에 내린 파일에 작업을 해야된다.
using DevExpress.Office;
using DevExpress.Spreadsheet;
using DevExpress.XtraSpreadsheet;
using DevExpress.XtraPrinting;
using DevExpress.Docs;
using System.IO;
SaveFileDialog dialog = new SaveFileDialog();
dialog.FileName = "test.xlsx";
dialog.Filter = "Excel File(*.xlsx)|*.xlsx";
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string fileFullName = dialog.FileName;
gvMaster.ExportToXlsx(fileFullName);
DataSet _dsExcel = (DataSet)arg.Result;
using (var xls = new Workbook())
{
var sheet1 = xls.Worksheets.ActiveWorksheet;
xls.Worksheets.Add("In-Out");
var sheet2 = xls.Worksheets[1];
var dtMaster = _dsExcel.Tables[0];
for (int i = 0; i < dtMaster.Rows.Count; i++)
{
for (int j = 0; j < dtMaster.Columns.Count; j++)
{
sheet1.Rows[i+1][j].SetValue(dtMaster.Rows[i][j]);
}
}
var dtDetail = _dsExcel.Tables[1];
for (int i = 0; i < dtDetail.Rows.Count; i++)
{
for (int j = 0; j < dtDetail.Columns.Count; j++)
{
sheet2.Rows[i+1][j].SetValue(dtDetail.Rows[i][j]);
}
}
//sheet1.GetUsedRange().AutoFitColumns();
//sheet1.GetUsedRange().AutoFitRows();
//sheet2.GetUsedRange().AutoFitColumns();
//sheet2.GetUsedRange().AutoFitRows();
xls.Worksheets.ActiveWorksheet = xls.Worksheets[0];
xls.SaveDocument(fileFullName, DocumentFormat.Xlsx);
///자동실행
Process.Start(fileFullName);
}
}