excel9795和DisplayUnit
我有一个表,源文件是从dbf里copy to出来的,所以是excel5格式。
现在需要用里面的数据生成一个图表,但总是存盘不成功,一个星期以来反复排查,发现问题与Excel的DisplayUnit有关。
把代码提炼出来如下:
loExcel = GetOBJECT( '','excel.application' )
cSourceFile = 'D:\Documents\Visual FoxPro 项目\TAX\test\服务业统计.xls'
cTempFile ='D:\Documents\Visual FoxPro 项目\TAX\test\temp.xls'
loBook = loExcel.workbooks.Open( cSourceFile )
loSheet = loBook.WorkSheets( 1 )
loRange = loSheet.UsedRange
**作图在数据区域之外,下列代码用于确定作图位置。
lnLeft = 40
lnTop = loSheet.UsedRange.Height + 4 * loSheet.Rows( 1 ).Height
lnWidth = 600
lnHeight = 480
loChartObject = loSheet.ChartObjects.Add( lnLeft, lnTop, lnWidth, lnHeight )
loChartObject.Chart.Chartwizard( loRange,xlLine,;&&折线图。
4,xlRows,;&&以行为系列。
1,;&&分类标签。
1,;&&系列标签。
.t.,;&&显示图例。
'统计图',; &&图表标题。
,,)
WITH loChartObject.Chart.Axes( xlValue )&&调整数值轴单位。
.ScaleType = xlLinear
* .DisplayUnit = xlMillions
.HasDisplayUnitLabel = .t.
.TickLabels.NumberFormat = "#,##0"
ENDWITH
loBook.SaveAs( cTempFile,;&&以临时文件存盘。
xlExcel9795,;&&以新文件格式存盘。
,,,.f.,; &&不备份。
,xlLocalSessionChanges,;&&自动接受本地用户修改。
,,,)
loBook.Close
loExcel.Quit
RELEASE loBook, loExcel
上述代码,如果屏蔽DisplayUnit可以存盘成功。但一打开,就提示ole服务器抛出一个意外。
如果不用新格式存盘,仍用excel5存盘,那么不屏蔽DisplayUnit也能存盘成功。但这个时候DisplayUnit不起作用,一存盘所有的格式调整就都消失了,甚至包括单元格合并(这段代码里没有出现),怀疑是Excel5不支持这些格式。
大家有没有遇到过这种问题?怎么解决?
[解决办法]
loBook = loExcel.workbooks.Open( cSourceFile )
打开后,先不要做下面的工作,先把把保存为最新的格式,
loExcel.ActiveWorkbook.SaveAs('C:\New格式.xls',43) && 43为97/2003
然后再打开这个新格式的 'C:\New格式.xls',最后再运行下面图表相关代码。
[解决办法]
你在2000以上OFFICE中测试,看看是否正常,估计是EXCEL版本低了