七、使用Excel宏预处理要导出的数据
从上述的讨论可以看出,标准的财务报表所组织的数据对于SharePoint列表并不朋好(这点可以从图1和图2看出)。除非公司自愿改变它们的财务报表格式(这几乎是不可能的),否则我们就需要使用某种方法来格式化这些数据。幸运的是,在Excel中提供了一种强有力的宏引擎。我们可以使用它们非常容易地格式化数据。
下面列表显示了一些需要处理的任务,不管我们选择哪种方法进行数据导出,都可以使用如下的方法进行自动格式化任务:
从上述的讨论可以看出,标准的财务报表所组织的数据对于SharePoint列表并不朋好(这点可以从图1和图2看出)。除非公司自愿改变它们的财务报表格式(这几乎是不可能的),否则我们就需要使用某种方法来格式化这些数据。幸运的是,在Excel中提供了一种强有力的宏引擎。我们可以使用它们非常容易地格式化数据。
下面列表显示了一些需要处理的任务,不管我们选择哪种方法进行数据导出,都可以使用如下的方法进行自动格式化任务:
1. 将数据从标准的行格式转换成列格式。在List Bulk Import的最新版本已经提供了这个功能。但如果我们不想使用它或没有最新版本,就只能使用宏来做这件事了。
2. 在转换后,我们将移动一些列标题,将它们放到同一行,代码如下:
3. 财务报表经常在应该包含数字的单元格包含文本。典型的例子是在单元格中包含"NA"。SharePoint在一个为数值类型的单元格中并不允许有文本,因此我们需要使用如下代码进行转换:' 'Consolidate header information into a single column in those 'cases where the headers are split between two columns. ' 'Parameters: xlWS, the Worksheet object to manipulate ' strCol, the column to be edited ' Public Function EditHeaders(xlWS As Excel.Worksheet, _ strCol As String) As Boolean Dim iRowCount As Integer Dim i As Integer Dim strRange As String Dim strHeader As String Dim xlCell As Range iRowCount = xlWS.UsedRange.Rows.Count strRange = strCol & "1:" & strCol & iRowCount For Each xlCell In xlWS.Range(strRange) strHeader = xlCell.Value If (strHeader <> "" And xlCell.Offset(0, 1) = "") Then xlCell.Offset(0, 1).Value = strHeader End If Next xlCell End Function
在本文中介绍了四种从Excel导出数据到SharePoint的方法。虽然本项目使用了第三方工具来完成这个任务。但这不是必须的,如果我们不需要那么复杂的功能,如不需要保留日志,也可以使用其他的方法。总之,保证数据的准确性是进行进一步商业分析的有力保证。'Edit the cells with "NA". 'Parameters: xlWS, the Worksheet object to be edited Public Function EditFormulas(xlWS As Excel.Worksheet) As Boolean xlWS.Columns.Replace "NA", "" End Function