一個朋友請我看公司用一個EXCEL 檔案,很奇怪,檔案很大,但是裡面沒有甚麼東西?
可以每次編輯都會佔很大資源
不知道有沒有前輩可以幫我看看原因在哪?
檔案連結在下面:
我有用ESET掃毒軟體掃,沒有發現病毒!
https://drive.google.com/file/d/19qIFcSJ1DL5wDexW62EjB1BrscAA9t0m/view?usp=sharing
有很大量的TextBox, 將不要用的刪除即可
超強!!
不過找到他~要刪除它(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
按下F5 → 特殊 → 物件 → 確定
就可以全部選取了,
但是刪除需要一點時間,
剛剛刪除約花了5分鐘
也剛好翻到我好久以前有回答的文章 一樣的狀況
https://ithelp.ithome.com.tw/questions/10193188
這個EXCEL檔是ERP轉檔,
如果是這樣來的,ERP公司就要檢討一下了,
沒有什麼內容,檔卻很大,不合理。
有很大量的TextBox,
我懷疑是某種轉檔工具產製出來的,比如ERP中有報表,然後這個工具把報表轉成excel,那麼ERP公司就不必再花精神去寫report 2 excel 的苦活了。
我動用了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();
}
}