iT邦幫忙

0

奇怪的EXCEL檔案

  • 分享至 

  • xImage

一個朋友請我看公司用一個EXCEL 檔案,很奇怪,檔案很大,但是裡面沒有甚麼東西?
可以每次編輯都會佔很大資源
不知道有沒有前輩可以幫我看看原因在哪?
檔案連結在下面:
我有用ESET掃毒軟體掃,沒有發現病毒!
https://drive.google.com/file/d/19qIFcSJ1DL5wDexW62EjB1BrscAA9t0m/view?usp=sharing

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
stephen3342
iT邦新手 2 級 ‧ 2021-06-01 12:13:24
最佳解答

有很大量的TextBox, 將不要用的刪除即可
https://ithelp.ithome.com.tw/upload/images/20210601/20098325kfC2Kkrkp0.jpg

看更多先前的回應...收起先前的回應...
jasonr iT邦新手 2 級 ‧ 2021-06-01 12:59:47 檢舉

超強!!
不過找到他~要刪除它(textbox)就卡住了(數量太多)
這個EXCEL檔是ERP轉檔,
不知道有沒有其他的方法比較好的噹法可以移除它?

我寫了一段VBA來處理這類問題

Sub DeleteAllEmptyTextboxies()
    Dim i As Long
    
    With ActiveSheet.Shapes
        For i = .Count To 1 Step -1

            If .Item(i).Type = msoTextBox Then
                If .Item(i).TextFrame.Characters.Text = "" Then
                    .Item(i).Delete
                End If
            ElseIF .Item(i).Type = msoPicture Then
                If .Item(i).Width < 10 OR .Item(i).Height < 10 Then
                    .Item(i).Delete
                End If
            End If

        Next i
    End With
End Sub

jasonr iT邦新手 2 級 ‧ 2021-06-01 16:05:34 檢舉

感謝

jasonr iT邦新手 2 級 ‧ 2021-06-01 17:01:09 檢舉

上述 VBA 程式測試OK,
哈~不過執行後還是要跑一會

物件多,要些許時間
因我的同仁們, 只能刪除不小心產生的空物件(TextBox & PictureBox), 不能全選刪除, 否則會哭哭.
使用者習慣copy paste, 誤留一個空物件後, 就有機會呈等比級數的增長

0
逢摸必爆MIS
iT邦研究生 3 級 ‧ 2021-06-01 15:45:21

按下F5 → 特殊 → 物件 → 確定
就可以全部選取了,
但是刪除需要一點時間,
剛剛刪除約花了5分鐘

也剛好翻到我好久以前有回答的文章 一樣的狀況
https://ithelp.ithome.com.tw/questions/10193188

jasonr iT邦新手 2 級 ‧ 2021-06-01 16:59:49 檢舉

謝謝你的回覆

0
ckp6250
iT邦好手 1 級 ‧ 2021-06-01 20:11:38

這個EXCEL檔是ERP轉檔,

如果是這樣來的,ERP公司就要檢討一下了,
沒有什麼內容,檔卻很大,不合理。

有很大量的TextBox,

我懷疑是某種轉檔工具產製出來的,比如ERP中有報表,然後這個工具把報表轉成excel,那麼ERP公司就不必再花精神去寫report 2 excel 的苦活了。

0
japhenchen
iT邦超人 1 級 ‧ 2021-06-02 09:11:56

我動用了C# + EPPLUS,把你的EXCEL檔複製一份純資料的部份出來存成複本,你的正本650KB,複本才15KB,也花了近5分鐘,看來這個ERP產生EXCEL的功能,該檢討了

 private void CleanXlsx(string fileName)
        {
            using (OpenFileDialog ofd = new OpenFileDialog())
            {
                ofd.Filter = "Excel|*.xlsx";
                ofd.DefaultExt = "xlsx";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    FileInfo fi = new FileInfo(fileName);
                    using (ExcelPackage ep = new ExcelPackage(fi))
                    {
                        ExcelWorksheet ews = ep.Workbook.Worksheets.First();
                        ExcelWorksheet cEWS = ep.Workbook.Worksheets.Add("ResetSheet");
                        int x = ews.Dimension.Rows;
                        int y = ews.Dimension.Columns;
                        ews.Cells[1, 1, x, y].Copy(cEWS.Cells[1, 1, x, y]);
                        cEWS.Cells.AutoFitColumns();
                        ep.Workbook.Worksheets.Delete(ews);
                        ep.SaveAs(new FileInfo(Path.Combine(fi.DirectoryName, "aaaa.xlsx")));
                    }
                }
                this.Close();
            }
        }

我要發表回答

立即登入回答