写入Excel(Writing to Excel)

我正在测试如何填写我的Excel工作表的信息,并编写了一个简单的测试程序

use Win32::OLE qw(in);
use Win32::OLE::Const "Microsoft Excel";

$Win32::OLE::Warn = 3;

my $excel = Win32::OLE->new("Excel.Application", "Quit");
my $book = $excel->Workbooks->Add();
my $sheet = $book->Worksheets(1);
my $range = $sheet->Range($sheet->Cells(1,1), $sheet->Cells(5,5));

my $mat = $range->{Value};
$mat[1][1] = "x";
#for my $row (@$mat){
#   print "$i\n";
#   for my $cel (@{$row}){
#       $cel = "x";
#   }
#}

$range->{Value} = $mat;


my $fso = Win32::OLE->new("Scripting.FileSystemObject");
my $map = $fso->GetAbsolutePathName(".");
my $padnaam = $map . "\\test.xlsx";
$book->SaveAs($padnaam);

当我使用注释掉的代码时,有一个很好的“x”平方,但是当我试图通过索引分配一个x时,不会出现任何东西。 我猜测我没有正确引用数组,但是在查看perlreftut和所有关于二维数组的问题后,我无法找出应该使用的正确序列。

那么,我怎样才能通过索引来增加值的范围?


I'm testing out how to fill in info to my excel sheet and wrote a simple test program

use Win32::OLE qw(in);
use Win32::OLE::Const "Microsoft Excel";

$Win32::OLE::Warn = 3;

my $excel = Win32::OLE->new("Excel.Application", "Quit");
my $book = $excel->Workbooks->Add();
my $sheet = $book->Worksheets(1);
my $range = $sheet->Range($sheet->Cells(1,1), $sheet->Cells(5,5));

my $mat = $range->{Value};
$mat[1][1] = "x";
#for my $row (@$mat){
#   print "$i\n";
#   for my $cel (@{$row}){
#       $cel = "x";
#   }
#}

$range->{Value} = $mat;


my $fso = Win32::OLE->new("Scripting.FileSystemObject");
my $map = $fso->GetAbsolutePathName(".");
my $padnaam = $map . "\\test.xlsx";
$book->SaveAs($padnaam);

When I use the commented out code, there is a nice square of "x"s but when I just try to assign an x by index nothing appears. I'm guessing I'm not referencing the array correctly but after looking trough the perlreftut and all questions I could find about 2D arrays I can't really figure out the correct sequence that should be used instead.

So, how can I add values to the range by index?


原文:https://stackoverflow.com/questions/47338142
2021-07-31 22:07

满意答案

$ mat是一个数组引用。 您需要解除引用它:

$$mat[1][1] = "x";

$mat is an array reference. You need to dereference it:

$$mat[1][1] = "x";

相关问答

更多

什么是EXCEL

Excel是微软公司出品的Office系列办公软件中的一个组件,确切地说,它是一个电子表 格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测并且具有强大的制作图表的功能;还可以制作网页.

使用Apache POI写入excel会破坏excel文件(Writing to an excel using Apache POI corrupts the excel file)

创建工作表,行和单元格后,需要将excel写入磁盘。 public WriteExcel(String FilePath) throws IOException { this.FilePath=FilePath; } //Write to a specific Cell public void writeToCell(String SheetName, int RowNum, int ColNum, String Data) throws IOException { fout...

Powershell将数据写入excel文件(Powershell writing data into excel file)

如果两个阵列具有相同数量的记录,您可以执行以下操作: for ($i = 0, $i -lt $activeUsers.Length; $i++) { ($user_id,$user_name,$Costcntr,$ApprMgr) = $activeUsers[$i].split('|') $row = 2 * $i + 2 $ActiveWorksheet.Cells.Item($i, 1) = $user_id $ActiveWorksheet.Cells.Item($i...

在jxl中写入Excel(Writing to Excel in jxl)

在这里我没有看到问题,因为我们正在处理可能会失败的文件IO,所以会出现异常。 你可以修改下面的代码,它应该适合你。 import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class MyClass { public static void main(String...

写入excel文件错误(Writing to excel file error)

我最近创建了一个报告,输出到excel并且之前遇到了类似的问题。 错误代码0x800A03EC(或-2146827284)表示NAME_NOT_FOUND; 你问了什么,Excel找不到它。 希望我提出的解决类似问题的代码可以为您提供一些帮助。 try { //MyData catch (Exception COMException_...

使用Matlab将字符串写入excel?(Writing strings into excel using Matlab?)

更新的答案: 如果我理解正确,看起来您的可变data是一个单元阵列,其中每个单元格包含1乘N(或可能是N乘1)的字符串数组。 如果您想尝试将每个字符串的单元格数组合到电子表格的一个单元格中,则需要先将每个数组格式化为单个长字符串。 下面是一个示例,说明如何通过将字符串的单元格数组连接在一起以及它们之间的换行符来格式化字符串的单元格数组: data = {{'hello' 'hi' 'hey'} ... %# Sample cell array of 1-by-N ...

写入Excel(Writing to Excel)

$ mat是一个数组引用。 您需要解除引用它: $$mat[1][1] = "x"; $mat is an array reference. You need to dereference it: $$mat[1][1] = "x";

在熊猫中写入Excel的问题(Problems writing to Excel in pandas)

Python不会为您扩展主目录。 你有几个选择: os.path.expanduser(the_path) os.path.join(os.environ.get('HOME'), the_path) 这是一个例子 In [17]: os.path.expanduser('~/a_path_wth_tilde') Out[17]: '/home/phillip/a_path_wth_tilde' Python doesn't expand the home directory for you. ...

使用Selenium将测试结果写入Excel(Writing Test Results to Excel using Selenium)

这是我看到的结构: 1)定义了DriverFactory的部分。 public class BrowserFactory { public static WebDriver localDriver(Capabilities capabilities) { String browserType = capabilities.getBrowserName(); if (browserType.equals("firefox")) return new FirefoxDriver(capabili...

通过Access VBA将公式写入Excel(Writing formula into Excel through Access VBA)

FormulaR1C1是如何编写公式的方法。 Formula是指在A1中编写公式,如=B1+C1 。 要使用R1C1表示法编写相同的公式,您可以写=RC[1] + RC[2] 。 此外,在A1中写入=B2+C2 ,写入此=R[1]C[1] + R[1]C[2] - >,这样您就可以看到偏移了希望公式返回值的列和行从。 你想在代码中做什么是偏移公式的位置,而不是它的计算方式,所以你应该这样写: .ActiveCell.Offset(,1).Formula = strExcel 实际上,你应该完全摆...

相关文章

更多

这种的EXCEL表格 怎么来解析??

如图的EXCEL表格 怎么来解析??

JXLS根据excel模板生成EXCEL并下载

JXLS根据excel模板生成EXCEL并下载,jxl.jar,jxls-core-0.9.9.jar ...

POI 操作 Excel的主要API

Java Aspose Cells 是一种纯粹的Java授权的Excel API

使用POI操作Excel和Word

前言:今天在项目中看到有小模块是上传Excel解释后保存到数据库的操作,好奇之下去了解了如何使用Apa ...

POI 操作Excel公式

在执行这个公式

java+jsp来获取excel的数据?

首先我会在jsp页面上给用户一个上传组件,然后用户上传excel~然后自动后台去解析excel里面的数 ...

lucene读取word,excel,pdf

前面在写lucene入门的时候,例子只能对txt文档建立索引,不能对word,excel,pdf建立索 ...

jxl解析excel并导入数据库

怎样用jxl解析多级表头的excel文件,确定某个单元格cell对应的标题?

原创:如何实现在Excel通过循环语句设置指定行的格式

原创:如何实现在Excel通过循环语句设置指定行的格式 一、需求: 想让excel的某些行(比如3的倍 ...

java jxl 操作excel 时老是这个错误

代码如下: InputStream iso = new FileInputStream(filepa ...

最新问答

更多

将十六进制的字符串转换为字符串(Convert hex-encoded String to String)

您希望将十六进制编码的数据用作AES密钥,但数据不是有效的UTF-8序列。 您可以将其解释为ISO Latin编码中的字符串,但AES(key: String, ...)初始化程序将该字符串转换回其UTF-8表示形式,也就是说,您将从开始时获得不同的关键数据。 所以你不应该把它转换成字符串。 使用 extension Data { init?(fromHexEncodedString string: String) } 方法从Swift中进行十六进制/二进制字符串转换,将十六进制编码的

将friendly_id添加到用户模型后,登录后的友好转发不起作用(Friendly forwarding after login doesn't work after adding friendly_id to the user model)

在应用程序控制器中,将redirect_back_or(path)方法更改为此方法。 def redirect_back_or(path) redirect_to session[:forwarding_url] || path session.delete(:forwarding_url) end 你有redirect_to request.referer之前负责将你重定向到最后一个url,即login_url。 我不知道为什么你要定义两个不同的方法

Qt + VS2010:由于 .dll从您的计算机丢失,程序无法启动(Qt + VS2010: The program can't start because .dll is missing from your computer)

您可能需要将有问题的DLL复制到您的可执行文件所在的文件夹中,或者确保DLL位于系统PATH中的文件夹中。 You likely need to copy the DLLs in question to the folder your executable is in, or ensure that the DLLs are located in a folder in the system's PATH.

AutoFixture使用内部setter创建属性(AutoFixture create property with internal setter)

理想情况下 ,测试不应该与类的internal成员交互,因为它们明确地从其公共API中排除 。 相反,这些成员将通过公共API启动的代码路径间接测试。 但是,如果在您的特定情况下这不可行,则可能的解决方法是从测试中明确地为内部属性赋值 。 您可以通过以下两种方式之一来实现: 通过使用InternalsVisibleTo属性将程序集中的所有内部成员公开给测试项目。 通过在特定接口中表示类的可修改状态并明确地实现它。 在您的示例中,选项1将是: // [assembly:InternalsVisib

使用Trigger.IO/PhoneGap在UIWebView中使用focus()事件自动显示键盘(Show keyboard automatically with focus() event in UIWebView using Trigger.IO/PhoneGap)

访问UIWebView不是我们在当前版本的插件中正确公开的东西(但我们很快就会支持)。 现在,如果您想尝试一下,可以添加 extern UIWebView *webView; 在插件文件的顶部,这将使您的API方法中的变量webView可用。 这将很快停止工作,所以我建议你现在只用它来测试一下。 2012年10月更新 : 该应用程序的Web视图现在通过ForgeApp : http : ForgeApp 例如: [ForgeApp sharedApp].webView Access to t

ASP.NET MVC控件(ASP.NET MVC Control)

您可以使用RadComboBox以及此处找到的此telerik社区项目提供的一些小调整。 应该在MVC中都能正常工作。 You can use the RadComboBox along with a little tweaking as provided for by this telerik community project, found here. Should all work fine in MVC.

在后期保存上下文 - 将指针保存到上下文?(Saving Context At a Later Stage - Saving Pointer To Context ? Core Data)

是的,您可以在循环后保存上下文。 它比每次迭代中的保存要好得多。 如果你看一下MagicalRecord src,你会看到MR_contextForCurrentThread总是为相同的线程返回相同的上下文,如果没有上下文的线程,MagicalRecord会创建它。 此外,您不需要传递上下文[_entityClass createInContext:context] ,只需要[_entityClass MR_createEntity] - 它将在当前线程的上下文中创建 Yes, you can

tinyMce函数用于确定弹出窗口是否已打开(tinyMce function to determine if popup is already open)

这是我要去的解决方案: 我似乎已经确认: - windowManager.open()不会像window.open()那样返回对窗口的引用 - windowManager没有内置方法来限制可以打开的实例数。 但它确实有一种方法可以将onClose函数添加到插件窗口:ed.windowManager.onClose.add(function(){alert('Closing!');}); 所以我将在onClick代码中使用一个变量来跟踪弹出窗口是否已被打开和关闭。 onClose函数将该变量标记为

使用nil调用Document.find在mongodb中无效(Calling Document.find with nil is invalid in mongodb)

OrderController #new调用OrderController#current_cart,它运行Cart.find(session [:cart_id])。 在会话开始时没有:cart_id,即session [:cart_id]为nil,你得到上面的Mongoid :: Errors :: InvalidFind异常。 请注意,当您正在抢救ActiveRecord :: RecordNotFound时,您的救援子句不会挽救该异常。 您正在使用Mongoid,而不是ActiveRec

在函数中返回postgresql查询结果(Return postgresql query result in a function)

假设您正在使用nodejs和pg模块。 正如您所说,由于查询功能是异步的,您无法直接将结果返回给调用者。 传统上,在nodejs中,调用者传递一个回调函数来处理结果或错误(如果有的话)。 在Kotlin中,这看起来像: client.query(MY_QUERY_TEMPLATE, params) { err, result -> if (err != null) { // do something with the error }