iT邦幫忙

0

PHP設計 EXCEL 排版問題

我有一個資料庫
利用SQL將搜尋到的資料印出來
並印至EXCEL下載
程式碼如下:(一些基本宣告我就省略了)

$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('工作表一');

$objPHPExcel->getActiveSheet()->SetCellValue('A1', '欄位1');
$objPHPExcel->getActiveSheet()->SetCellValue('B1', '欄位2');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', '欄位3');
$objPHPExcel->getActiveSheet()->SetCellValue('D1', '欄位4');
$objPHPExcel->getActiveSheet()->SetCellValue('E1', '欄位5');
$objPHPExcel->getActiveSheet()->SetCellValue('F1', '欄位6');
$objPHPExcel->getActiveSheet()->SetCellValue('G1', '欄位7');
$objPHPExcel->getActiveSheet()->SetCellValue('H1', '欄位8');

$RowCount = 1;

$sSQL = "SELECT * FROM TABLE";

$data = $conn->Execute($sSQL) or die($conn->ErrorMsg());
while ($field = $data->FetchRow())
{
    //寫入資料
    $RowCount = $RowCount + 1;
    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$RowCount, $field['欄位1']);
    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$RowCount, $field['欄位2']);
    $objPHPExcel->getActiveSheet()->SetCellValue('C'.$RowCount, $field['欄位3']);
    $objPHPExcel->getActiveSheet()->SetCellValue('D'.$RowCount, $field['欄位4']);
    $objPHPExcel->getActiveSheet()->SetCellValue('E'.$RowCount, $field['欄位5']);
    $objPHPExcel->getActiveSheet()->SetCellValue('F'.$RowCount, $field['欄位6']);
    $objPHPExcel->getActiveSheet()->SetCellValue('G'.$RowCount, $field['欄位7']);
    $objPHPExcel->getActiveSheet()->SetCellValue('H'.$RowCount, $field['欄位8']);
}

以上程式目的是將TABLE資料每筆列出至EXCEL
效果如下所示...

欄位1	欄位2	欄位3	欄位4	欄位5	欄位6	欄位7	欄位8
Data1-1	Data1-2	Data1-3	Data1-4	Data1-5	Data1-6	Data1-7	Data1-8
Data2-1	Data2-2	Data2-3	Data2-4	Data2-5	Data2-6	Data2-7	Data2-8
Data3-1	Data3-2	Data3-3	Data3-4	Data3-5	Data3-6	Data3-7	Data3-8

在這邊我設了一個RowCount變數去計算要輸出的列數
並往下伸展資料

但現在遇到一個問題...
要做統計表..
按照客戶需求的報表樣式...
是往右伸展...
及變數會變成A.B.C....而不是1.2.3.....
欄位型態如下所示...

月份	106.01	106.02	106.03	106.04	106.05	106.06
欄位1	Data1-1	Data2-1	Data3-1	Data4-1	Data5-1	Data6-1
欄位2	Data1-2	Data2-2	Data3-2	Data4-2	Data5-2	Data6-2
欄位3	Data1-3	Data2-3	Data3-3	Data4-3	Data5-3	Data6-3
欄位4	Data1-4	Data2-4	Data3-4	Data4-4	Data5-4	Data6-4
欄位5	Data1-5	Data2-5	Data3-5	Data4-5	Data5-5	Data6-5
欄位6	Data1-6	Data2-6	Data3-6	Data4-6	Data5-6	Data6-6
欄位7	Data1-7	Data2-7	Data3-7	Data4-7	Data5-7	Data6-7
欄位8	Data1-8	Data2-8	Data3-8	Data4-8	Data5-8	Data6-8

這裡A欄固定為標題欄
此後資料搜尋以月份為條件向右新增(B.C.D...)

不同於之前第1列為標題列
資料往下新增(1.2.3...)
我可以用RowCount逐步+1

試問IT幫的幫眾們...變成英文的話...該用甚麼方法解決...
一定有方法...
徒然一個節打不開...
/images/emoticon/emoticon67.gif

tzuchin iT邦新手 5 級 ‧ 2017-02-23 11:01:35 檢舉
雖然已經有解答出現了XD
但我看到這個,然後又不是很熟PHPExcel的時候,
我會用
$word = 'A';
$word++;
PHP中,英文字母++,他會變成B,C,D.....然後AA,AB,AC...
不知道這個方式是不是也有"可能"可以解決你的問題XD!?
我沒有試~
不過剛剛去查了一下~
似乎真有其事~
如果可以執行~
應該沒有問題~^^
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2017-02-22 11:03:23
最佳解答
  1. 是iT「邦」不是iT「幫」,我們不是洪興社
  2. 你的答案只有一個字,setCellValueByColumnAndRow
  3. 你的創新的 php Git client現在怎麼樣了,production了嗎?

1.iT幫...還蠻霸氣的~XD
2.打通任督二脈了~謝謝~
3.被關注..好害羞..
/images/emoticon/emoticon25.gif
這個問題後來老闆一個霸氣..買了PHP加密..
最後演變成將PHP網頁加密後發佈給大家使用..
/images/emoticon/emoticon10.gif

那沒辦法了,只能給你老闆按三個
/images/emoticon/emoticon12.gif/images/emoticon/emoticon12.gif/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答