Мой файл Excel с 1 QueryTable и 3 PivotTables имеет размер 9 МБ при обновлении без данных - PullRequest
0 голосов
/ 16 марта 2011

Итак, вот моя проблема:

Я создал отчет Excel, который будет загружен с моего веб-сайта, но сам по себе может быть обновлен.Обычно пользователь загружает файл, затем вводит диапазон дат на первой вкладке и нажимает кнопку обновления, чтобы получить свои данные.Затем эти данные извлекаются с помощью вызова хранимой процедуры и помещаются в QueryTable, который содержит 3 отдельные ссылки на сводные таблицы.

После разработки и тестирования я заметил, что размер файла составляет 14 МБ, но затем понял, что сохранил его с 18 000+ записи в QueryTable.Поэтому я решил, что в будущем я просто обновлю данные датами, таким образом, не возвращая никаких данных, сохраню их и разместлю этот файл намного меньшего размера, без сохраненных данных.

Однако, когда я сохранил его на этот раз,даже с 0 записями в QueryTable размер файла по-прежнему составляет 9 МБ.Я не хочу размещать файл 9 МБ без данных, и я уверен, что мои пользователи не хотят загружать файл 9 МБ без данных.

Когда я создал QueryTable, я изначально установилсвойство SaveData в True.Однако при попытке уменьшить размер файла я устанавливаю значение false каждый раз, когда обновляются данные.Вот весь мой обновляющий код VBA:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub RefreshTables()

Dim connstring As String
Dim startDate As String
Dim endDate As String

connstring = "my connection string"
startDate = Range("Parameters!B6").Value
endDate = Range("Parameters!B7").Value

Range("Parameters!D9").Value = "Refreshing..."

Worksheets("Data").ListObjects("DataTable").QueryTable.Connection = connstring
Worksheets("Data").ListObjects("DataTable").QueryTable.CommandText = "EXEC my_storedproc '" & startDate & "', '" & endDate & "'"
Worksheets("Data").ListObjects("DataTable").QueryTable.SaveData = False
Worksheets("Data").ListObjects("DataTable").QueryTable.Refresh BackgroundQuery:=False

Dim w As Worksheet, p As PivotTable
For Each w In ThisWorkbook.Worksheets
    For Each p In w.PivotTables
        p.RefreshTable
        p.Update
    Next
Next

Range("Parameters!D9").Value = "Complete"
Sleep (500)
Range("Parameters!D9").Value = ""

End Sub

Кроме того, я вошел в каждую из моих сводных таблиц в Параметры> Данные и снял флажок «Сохранить исходные данные в файл».Это никак не сказалось на уменьшении размера файла при его сохранении.

Мне кажется, что Excel все еще сохраняет старые данные в каком-то кэше или что-то в этом роде, и я не могу понять, как их удалить.

1 Ответ

0 голосов
/ 16 марта 2011

Не могли бы вы создать новую электронную таблицу с кодом и источниками данных, выполнить те же настройки, как вы сказали выше, а затем сохранить ее.Стоит освежить, чтобы увидеть, работает ли это, но не сохраняйте, когда вы это сделали.Надеюсь, файл должен быть маленьким.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...