相当于......
<cfspreadsheet action="read" src="#form.uploadedFile#" query="mycontent" >
Run Code Online (Sandbox Code Playgroud)
在cfscript?
cfscript有spreadSheetRead(fileName) - 但结果是一个带有文件元数据的对象,即使我指定了工作表,它也只返回元数据而不是行列数据.
我需要遍历行...我该怎么做?
我试图避免退出我的脚本格式,并插入'cf'标签格式...任何帮助表示赞赏.
这更像是一个操作方法,而不是一个实际的问题.(我搜索过,找不到解决办法,所以我想出了这个)
我需要创建一个excel文件导出,允许用户:
使用Coldfusion 10,我需要格式化两种颜色(黑色和蓝色)的单元格内容.让电子表格上的单元格包含字符串"Text1:Text2".其中"Text1"的颜色应为黑色,"Text2"的颜色应为蓝色.我尝试了下面的代码,但它产生了所有蓝色文本.
SpreadsheetAddRow(spreadsheetData,"Text1: Text2",1,1);
format1=StructNew();
format1.color="black";
SpreadsheetFormatRow(spreadsheetData,format1,1);
format1.color="blue";
SpreadsheetFormatRow(spreadsheetData,format1,1);
Run Code Online (Sandbox Code Playgroud)
我如何应用两种颜色来格式化单细胞?
我使用ColdFusion导出相当少的行(大约1000)但是大量的列(大约300)到Excel.它是一个多页Excel文件,其中至少有两个页面具有大量列.使用cfspreadsheet抛出Java堆错误.更新JVM设置值没有显示任何改进.在不导致Java堆错误的情况下导出到Excel的最佳方法是什么?
编辑:我已经尝试了几种方法来解决程序中的问题.我正在使用cfsavecontent中的xml工作簿来构建多个工作表并使用cfcontent呈现结果.在这种情况下,cfcontent可能会使用大量内存,从而导致堆空间错误.
<cfsavecontent variables="REQUEST.xmlData">
<cfoutput>
<xml version="1.0"?>
<?mso-application progid="Excel.sheet"?>
<Workbook>
...other contents
</Workbook>
</cfoutput>
</cfsavecontent>
Run Code Online (Sandbox Code Playgroud)
对于第二种解决方法,我使用querynew来构建内容并使用在Excel中转储最终结果<Cfspreadsheet action="write">.对于后续的工作表,我正在使用<cfspreadsheet action="update">.最终目标是使用excel <cflocation url="excelPath">,但在这种情况下,cfspreadsheet更新将永远丢失内存错误.
如果更新jvm不是一个选项,那么您建议采用哪些其他方法来克服内存问题.
在ColdFusion 11中,我使用cfSpreadsheet将.xls文件转换为查询对象.以下是我的演示电子表格的屏幕截图:
我使用此代码在创建后立即查看查询对象:
<cfspreadsheet action="read" src="demo_spreadsheet.xls"
excludeHeaderRow="true"
headerrow="1" query="demo_query"/>
<cfdump var="#demo_query#">
Run Code Online (Sandbox Code Playgroud)
......我得到了这些结果:
请注意,我在电子表格中的所有4位数年份现在都是2位数年份?当我使用以下代码输出查询对象中的数据时:
<ul>
<cfoutput query="demo_query">
<li>#name# - #dateformat(start_date, 'medium')#</li>
</cfoutput>
</ul>
Run Code Online (Sandbox Code Playgroud)
...我得到以下输出(好吧,我是新来的,所以我不能发布超过两个屏幕截图,所以你必须相信我这个复制/粘贴):
1907年现在是2007年,1917年现在是2017年,1929年现在是2029年,2030年现在是1930年.似乎在1930年1月1日之前的任何日期的年份被读作20xx,并且在12月31日之后,2029年被读作19xx年.
我错过了什么吗?我以为我们用Y2K想出了这种事情.在某处我有不正确的简单设置吗?我已经用Google搜索了这个问题,我找不到任何相关信息.
任何建议都是最受欢迎的.
我正在cfspreadsheet使用ColdFusion生成Excel电子表格.我插入标题行,然后用于spreadsheetAddRows将查询转储到工作表中.问题是列通常不够宽.我知道我可以SpreadsheetSetColumnWidth单独调整每一列,但是有什么方法可以将自动宽度应用到整个工作表吗?我不知道每列的最大宽度,我不想单独将它应用于每一列.Excel具有列的自动宽度功能 - 有没有办法从ColdFusion代码触发它?(或者甚至更好:我可以添加到自动宽度 - 将每列设置为最大宽度+ 2或其他什么?)
我正在使用cfspreadsheet读取将工作表读入查询对象.
<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true">
Run Code Online (Sandbox Code Playgroud)
问题是,一些标题包含多个单词.所以我最终得到一个像这样的查询:
ID Name Start Date End Date
3 Test 1/1/2009 1/1/2013
17 Test 2 11/11/2010 11/11/2012
Run Code Online (Sandbox Code Playgroud)
如果我尝试访问列名中有空格的列之一,则会出错.
<cfoutput query="spreadsheetData">
#start date#
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我也试过#[start date]#了,但那没用.我无法控制收到的Excel工作表的格式.有没有办法访问多文本标题列?
今天,当我从电子表格中读取污道并试图在条件下过滤它们并从过滤后的数据中创建电子表格时,我遇到了一个非常奇怪的情况.这是我的步骤
阅读Excel表格
<cfspreadsheet action="read" src="#local.sFilePath#" excludeHeaderRow="true" headerrow ="1" query="local.qExcelData" sheet="1" />
Run Code Online (Sandbox Code Playgroud)创建保留查询
<cfset local.columnNames = "LoanNumber,Product," />
<cfset local.qSuccessData = queryNew(local.columnNames,"VarChar,VarChar") />
Run Code Online (Sandbox Code Playgroud)在条件上过滤Excel返回的查询,并将有效的查询添加到新的保留查询中
<cfloop query="local.qExcelData" >
<cfif ListFind(local.nExceptionRowList,local.qExcelData.currentrow) EQ 0>
<cfset queryAddRow(local.qSuccessData) />
<cfset querySetCell(local.qSuccessData, 'LoanNumber', local.qExcelData['Loan Number']) />
<cfset querySetCell(local.qSuccessData, 'Product', local.qExcelData['Product']) />
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)创建新的电子表格
<cfspreadsheet action="write" query="local.qSuccessData" filename="#local.sTempSuccessFile#" overwrite="true">
Run Code Online (Sandbox Code Playgroud)但是我在excel表中获得了以下内容
Loannumber Product
coldfusion.sql.column@87875656we coldfusion.sql.column@89989ER
Run Code Online (Sandbox Code Playgroud)
请帮忙解决这个问题.
我正在使用cfscript spreadsheetNew方法动态构建电子表格.
即
<cfscript>
downloadDoc = spreadsheetNew("spreadSheetName");
spreadsheetAddRow(downloadDoc,"spreadsheetCols");
....
</cfscript>
Run Code Online (Sandbox Code Playgroud)
我正在构建的其中一列包含一个公式,用于显示用户键入空白列的值与当前值(位于不同列中)之间的百分比差异.
我正在构建此用户请求我添加条件格式以根据值更改公式单元格的颜色(即,如果更改大于20%或小于-20%,则单元格应为红色).由于影响公式的其中一个值是由用户键入的,因此颜色更改需要在Excel中进行,而不是在我的函数中进行.
它在Excel中很容易,只是不确定如何将其构建为cfml生成的Excel文件.

我的问题是,有没有人知道这是否可以使用cfml(通过cfscript或cfspreadsheet标签)以及如何做到这一点?
我无法找到任何谷歌搜索,搜索cfdocs.org没有改变任何东西.
我正在使用cfspreadsheet创建一个电子表格对象.想使一些单个单元格成为受保护的(只读).如果有人以前试过,请告诉我.
我确实尝试将单元格格式设置为锁定,但似乎无法正常工作.以下是示例代码:
<cfset a = spreadsheetnew()>
<cfset format1 = structNew()>
<cfset format1.locked=true>
<cfset SpreadsheetFormatCell(a,format1,1,1)>
<cfspreadsheet action="write" filename="#expandpath('.')#/test.xls" name="a" overwrite="true">
Run Code Online (Sandbox Code Playgroud)
谢谢.
cfspreadsheet ×10
coldfusion ×10
excel ×4
spreadsheet ×2
apache-poi ×1
cfwheels ×1
coldfusion-9 ×1
formatting ×1