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);
}
}
'Winform' 카테고리의 다른 글
DevExpress 체크박스 Repository (0) | 2015.09.01 |
---|---|
DevExpress 그리드 이벤트 (4) | 2015.08.31 |
[DevExpress] 간트 차트 (0) | 2015.08.31 |
[DevExpress] Master Detail 그리드 설정 (0) | 2015.08.31 |
Infragistics Grid 멀티 헤더 (0) | 2015.08.26 |
댓글