final 1
parent
e575cab719
commit
49c14c3612
|
|
@ -96,6 +96,10 @@ namespace QuotationMaker.Controllers
|
|||
XSSFRow row;
|
||||
ICell cell = null;
|
||||
|
||||
double saHeight = 0.0;
|
||||
|
||||
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(1);
|
||||
//估價單名稱與報價日期
|
||||
row.Cells[0].SetCellValue(row.Cells[0].StringCellValue.Replace("{quotation_date}", objDetail.quotation_date));
|
||||
|
|
@ -200,6 +204,187 @@ namespace QuotationMaker.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
int saRowIndex = 16;
|
||||
|
||||
//紀錄範例列位置
|
||||
//目前編輯列
|
||||
int editRowIndex = 7;
|
||||
|
||||
//空白編輯列
|
||||
int blankIndex = 7;
|
||||
//小計列位置
|
||||
int subTotalIndex = 8;
|
||||
//AC列位置
|
||||
int acIndex = 9;
|
||||
//此項目總金額位置
|
||||
int sutTotalAcIndex = 10;
|
||||
//優惠總價為置
|
||||
int specTotalIndex = 12;
|
||||
|
||||
//主項目編號
|
||||
int itemNumber = 0;
|
||||
//開始產生項目價格列
|
||||
foreach (quotationMainItemDetail objMain in objDetail.quotationMainItemDetails)
|
||||
{
|
||||
itemNumber++;
|
||||
|
||||
//目前開始要填資料的位置
|
||||
int editIndex = editRowIndex;
|
||||
//目前主項目的個數(子項目加主項目)
|
||||
int rowCount = 0;
|
||||
|
||||
CopyRow((XSSFWorkbook)workbook, (XSSFSheet)sheet, editRowIndex, editRowIndex + 1);
|
||||
blankIndex++;
|
||||
subTotalIndex++;
|
||||
acIndex++;
|
||||
sutTotalAcIndex++;
|
||||
specTotalIndex++;
|
||||
saRowIndex++;
|
||||
|
||||
foreach (quotationSubItem objSub in objMain.quotationSubItems) {
|
||||
CopyRow((XSSFWorkbook)workbook, (XSSFSheet)sheet, editRowIndex, editRowIndex + 1);
|
||||
editRowIndex++;
|
||||
blankIndex++;
|
||||
subTotalIndex++;
|
||||
acIndex++;
|
||||
sutTotalAcIndex++;
|
||||
specTotalIndex ++;
|
||||
saRowIndex++;
|
||||
|
||||
rowCount++;
|
||||
}
|
||||
|
||||
//項目編號合併並填入編號
|
||||
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(editIndex, editIndex + rowCount, 0, 0));
|
||||
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(editIndex, editIndex, 1, 6));
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(editIndex);
|
||||
row.Cells[0].SetCellValue(itemNumber);
|
||||
row.Cells[1].SetCellValue(objMain.quotationMainItem_name);
|
||||
|
||||
int acTotal = 0;
|
||||
|
||||
//合併子項目row
|
||||
foreach (quotationSubItem objSub in objMain.quotationSubItems)
|
||||
{
|
||||
string descript = objSub.quotationSubItem_descript;
|
||||
|
||||
if (objSub.quotationSubItem_hasAC == "N" && objMain.quotationMainItem_ac > 0)
|
||||
{
|
||||
descript = descript + " (此項不加AC)";
|
||||
}
|
||||
|
||||
editIndex++;
|
||||
row = (XSSFRow)sheet.GetRow(editIndex);
|
||||
row.Height = -1;
|
||||
row.Cells[1].SetCellValue(objSub.quotationSubItem_name);
|
||||
row.Cells[2].SetCellValue(descript);
|
||||
row.Cells[3].SetCellValue("NTD " + objSub.quotationSubItem_price.ToString("###,###"));
|
||||
row.Cells[4].SetCellValue(objSub.quotationSubItem_number.ToString("###,###"));
|
||||
row.Cells[5].SetCellValue(objSub.quotationSubItem_unitType);
|
||||
row.Cells[6].SetCellValue(objSub.quotationSubItem_subTotal);
|
||||
|
||||
if (objSub.quotationSubItem_hasAC == "Y") {
|
||||
acTotal += (int)Math.Round((objSub.quotationSubItem_price * objSub.quotationSubItem_number) * (objMain.quotationMainItem_ac / 100));
|
||||
}
|
||||
}
|
||||
editIndex++;
|
||||
editRowIndex++;
|
||||
|
||||
sheet.ShiftRows(editIndex, sheet.LastRowNum, 3);
|
||||
|
||||
blankIndex+=3;
|
||||
subTotalIndex+=3;
|
||||
acIndex+=3;
|
||||
sutTotalAcIndex+=3;
|
||||
specTotalIndex+=3;
|
||||
saRowIndex += 3;
|
||||
|
||||
//複製小計欄
|
||||
CopyRow((XSSFWorkbook)workbook, (XSSFSheet)sheet, subTotalIndex, editIndex);
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(editIndex);
|
||||
row.Cells[6].SetCellValue("NTD " + (objMain.quotationMainItem_subTotal - acTotal).ToString("###,###"));
|
||||
|
||||
|
||||
rowCount++;
|
||||
|
||||
editIndex++;
|
||||
editRowIndex++;
|
||||
//複製AC欄
|
||||
CopyRow((XSSFWorkbook)workbook, (XSSFSheet)sheet, acIndex, editIndex);
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(editIndex);
|
||||
row.Cells[6].SetCellValue("NTD " + acTotal.ToString("###,###"));
|
||||
row.Cells[0].SetCellValue(row.Cells[0].StringCellValue.Replace("{quotationMainItem_ac}", objMain.quotationMainItem_ac.ToString()));
|
||||
|
||||
rowCount++;
|
||||
|
||||
editIndex++;
|
||||
editRowIndex++;
|
||||
//複製此項目總金額欄
|
||||
CopyRow((XSSFWorkbook)workbook, (XSSFSheet)sheet, sutTotalAcIndex, editIndex);
|
||||
row = (XSSFRow)sheet.GetRow(editIndex);
|
||||
row.Cells[6].SetCellValue("NTD " + (objMain.quotationMainItem_subTotal).ToString("###,###"));
|
||||
|
||||
rowCount++;
|
||||
editRowIndex++;
|
||||
//break;
|
||||
}
|
||||
|
||||
//刪除不需要的優惠價格欄
|
||||
if (objDetail.quotation_specTotal == 0) {
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(specTotalIndex);
|
||||
if (row != null)
|
||||
{
|
||||
sheet.RemoveRow(row);
|
||||
sheet.ShiftRows(specTotalIndex + 1, sheet.LastRowNum, -1);
|
||||
saRowIndex--;
|
||||
}
|
||||
}
|
||||
|
||||
//刪除sutTotalAc
|
||||
row = (XSSFRow)sheet.GetRow(sutTotalAcIndex);
|
||||
if (row != null)
|
||||
{
|
||||
sheet.RemoveRow(row);
|
||||
sheet.ShiftRows(sutTotalAcIndex + 1, sheet.LastRowNum, -1);
|
||||
saRowIndex--;
|
||||
}
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(acIndex);
|
||||
if (row != null)
|
||||
{
|
||||
sheet.RemoveRow(row);
|
||||
sheet.ShiftRows(acIndex + 1, sheet.LastRowNum, -1);
|
||||
saRowIndex--;
|
||||
}
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(subTotalIndex);
|
||||
if (row != null)
|
||||
{
|
||||
sheet.RemoveRow(row);
|
||||
sheet.ShiftRows(subTotalIndex + 1, sheet.LastRowNum, -1);
|
||||
saRowIndex--;
|
||||
}
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(blankIndex);
|
||||
if (row != null)
|
||||
{
|
||||
sheet.RemoveRow(row);
|
||||
sheet.ShiftRows(blankIndex + 1, sheet.LastRowNum, -1);
|
||||
saRowIndex--;
|
||||
}
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(saRowIndex);
|
||||
row.Height = 8190;
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(saRowIndex + 1);
|
||||
row.Height = 8190;
|
||||
|
||||
row = (XSSFRow)sheet.GetRow(saRowIndex + 2);
|
||||
row.Height = 4000;
|
||||
|
||||
MemoryStream ms = new MemoryStream();
|
||||
workbook.Write(ms);
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue